UED出的设计图如下:

 实际展示效果如下:

调取的数据如下:

"staffCountList":[
{
"time":"2019-12-24 17:20",
"staffCount":2
},
{
"time":"2019-12-24 17:10",
"staffCount":2
},
{
"time":"2019-12-24 16:00",
"staffCount":1
},
{
"time":"2019-12-24 15:50",
"staffCount":1
},
{
"time":"2019-12-24 15:40",
"staffCount":2
},
{
"time":"2019-12-24 15:30",
"staffCount":2
},
{
"time":"2019-12-24 15:20",
"staffCount":1
},
{
"time":"2019-12-24 15:10",
"staffCount":1
},
{
"time":"2019-12-24 15:00",
"staffCount":1
},
{
"time":"2019-12-24 14:50",
"staffCount":2
},
{
"time":"2019-12-24 14:40",
"staffCount":2
},
{
"time":"2019-12-24 14:30",
"staffCount":2
},
{
"time":"2019-12-24 14:20",
"staffCount":1
},
{
"time":"2019-12-24 14:10",
"staffCount":1
},
{
"time":"2019-12-24 14:00",
"staffCount":1
}
]

react代码操作步骤:

  1. 根据官方文档说明的“在 webpack 中使用 ECharts”,用 npm 安装 ECharts:npm install echarts --save
  2. 引入 ECharts:通过 npm 上安装的 ECharts 和 zrender 会放在node_modules目录下。可以直接在项目代码中 require('echarts') 得到 ECharts。
  3. 由于我的数据是在store里面获取的,第一次挂载的时候,是获取不到数据的,会报错。如果把以下内容写在非生命周期函数里面,会获取不到dom 的 id,也会报“Cannot read property 'getAttribute' of null问题”错
  4. 所以我把echart内容写在componentWillUpdate里面,就可以
//import 下面引入
var echarts = require('echarts'); componentWillUpdate = () => {
const { staffCountList = [] } = this.props.monitorStore //渲染图表
if (staffCountList) { //有数据才渲染
const time = staffCountList.map((v) => { //洗数据
const obj = v.time; //2019-12-23 17:56 从给的日期截取时间
const shotTime = obj.substring(10, 16)
return shotTime
}) const yDate = staffCountList.map((v) => {
const obj = v.staffCount;
return obj
}) //监控图表,必须放在didMount里面
var myChart = echarts.init(document.getElementById('staffChats')); // 绘制图表
myChart.setOption({ //这里内部可以从echarts官网实例根据你的需要获取数据,根据需求在配置项手册查看不同的配置项进行修改
tooltip: {
trigger: 'axis',
position: function (pt) {
return [pt[0], '10%'];
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: time,
textStyle: { //坐标字体样式
color: '#AEAEAE'
},
axisLine: { //坐标线
show: false
},
axisTick: { //坐标刻度
show: false
},
},
yAxis: {
type: 'value',
boundaryGap: [0, '100%'],
textStyle: {
color: '#AEAEAE'
},
axisLine: {
show: false
},
axisTick: {
show: false
},
},
grid: { //图表相对div位置
left: '0',
right: '15%',
bottom: '10%',
top: '10%',
containLabel: true //坐标刻度标签,改为false 坐标都没有了
},
series: [ //鼠标移动到图表上,显示的提示
{
name: '上线客服数',
type: 'line',
smooth: true,
symbol: 'none',
sampling: 'average',
itemStyle: {
color: 'rgb(93, 179, 230)'
},
areaStyle: { //面积图面积部分颜色
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: 'rgb(150, 218, 244,0.6)' //上部颜色
}, {
offset: 1,
color: 'rgb(93, 179, 230, 0.1)' //下部颜色
}])
},
data: yDate
}
]
});
}
} //render
<div className={styles.staffMonitor} id="staffChats"> </div>

EChart配置项手册

React中用EChart写面积图的更多相关文章

  1. 使用d3.v5实现折线图与面积图

    d3最新是V5版的,比起V2的API变动了不少,写下我实现过程 效果图: 面积图: 折线图: 目录结构: <!DOCTYPE html> <html lang="en&qu ...

  2. Python使用Plotly绘图工具,绘制面积图

    今天我们来讲一下如何使用Python使用Plotly绘图工具,绘制面积图 绘制面积图与绘制散点图和折线图的画法类似,使用plotly graph_objs 中的Scatter函数,不同之处在于面积图对 ...

  3. echart折线区域图

    在引入echart区域折线图时,没有出现对应的区域图 当发现引入下面代码到自己的代码中并没有对应的区域图 option = { xAxis: { type: 'category', boundaryG ...

  4. 06. Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图

    1.基本图表绘制 plt.plot() 图表类别:线形图.柱状图.密度图,以横纵坐标两个维度为主同时可延展出多种其他图表样式 plt.plot(kind='line', ax=None, figsiz ...

  5. matplotlib柱状图、面积图、直方图、散点图、极坐标图、箱型图

    一.柱状图 1.通过obj.plot() 柱状图用bar表示,可通过obj.plot(kind='bar')或者obj.plot.bar()生成:在柱状图中添加参数stacked=True,会形成堆叠 ...

  6. php中用GD绘制折线图

    php中用GD绘制折线图,代码如下: Class Chart{ private $image; // 定义图像 private $title; // 定义标题 private $ydata; // 定 ...

  7. javascript曲线图和面积图Line & Area chart控件功能及下载

    Line & Area chart 控件是一款新型的.可用性极强的曲线图和面积图产品.一个您网站的访问者可以放大他感兴趣的一段区域,打开和关闭数值气球,并可显示和隐藏图表.您能创建简单.堆积. ...

  8. 数据可视化:Echart中k图实现动态阈值报警及实时更新数据

    1 目标 使用Echart的k图展现上下阈值,并且当真实值超过上阈值或低于下阈值时候,标红报警. 2 实现效果 如下:

  9. 第四篇:R语言数据可视化之折线图、堆积图、堆积面积图

    折线图简介 折线图通常用来对两个连续变量的依存关系进行可视化,其中横轴很多时候是时间轴. 但横轴也不一定是连续型变量,可以是有序的离散型变量. 绘制基本折线图 本例选用如下测试数据集: 绘制方法是首先 ...

随机推荐

  1. 通过JVM日志来进行安全点分析

    许多事件都可能会导致JVM暂停所有的应用线程.这类暂停又被称为”stop-the-world”(STW)暂停.触发STW暂停最常见的原因就是垃圾回收了(github中的一个例子),但不同的JIT活动( ...

  2. The 5 types of programmers

    from: http://stevenbenner.com/2010/07/the-5-types-of-programmers/ps: 评论也很精彩 In my code journeys and ...

  3. [NLP] 语义网络与知识图谱入门(一)

    语义网络与知识图谱入门(一) RDF/XML 本体:一种形式化的对于共享概念体系明确而又详细的说明.就是指一种抽象的模型,可以用来描述对象类型.属性以及关系类型所构成的世界. RDF/XML主要讲的就 ...

  4. 使用KFold进行训练集和验证集的拆分,使用准确率和召回率来挑选合适的阈值(threshold) 1.KFold(进行交叉验证) 2.np.logical_and(两bool数组都是正即为正) 3.np.logical_not(bool数组为正即为反,为反即为正)

    ---恢复内容开始--- 1. k_fold = KFold(n_split, shuffle) 构造KFold的索引切割器 k_fold.split(indices) 对索引进行切割. 参数说明:n ...

  5. InputNumber计数器

    InputNumber 计数器 仅允许输入标准的数字值,可定义范围 要使用它,只需要在el-input-number元素中使用v-model绑定变量即可,变量的初始值即为默认值. <templa ...

  6. bulk_create(lst) 批量创建数据

    # 批量创建数据 # Create your views here. from django.db import models from django.shortcuts import HttpRes ...

  7. cocoapods [!] Unable to find a pod with name, author, summary, or description matching `xx`

    pod search MJRefresh的时候报错 [!] Unable to find a pod with name, author, summary, or description matchi ...

  8. 原生dapper中新增用户后根据用户id,在用户角色表中添加关联数据,事务处理

    var result = 0; var userId = 0; using (var db = _Sql.Connection) using (var tran =db.BeginTransactio ...

  9. onserverclick

    <button type="button" id="Log_Submit" runat="server" runat="se ...

  10. Linux进程:管理和调度

    一:进程管理 进程.轻量级进程和线程 通常定义:进程是程序执行时的一个实例. 这个很像类和实例对象的关系.从内核来看:进程的目的就是担当分配系统资源(CPU,内存等)的实体. 当进程创建时,它几乎和父 ...