zoukankan      html  css  js  c++  java
  • React中用EChart写面积图

    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配置项手册

  • 相关阅读:
    HOWTO re
    数据类型
    字符串
    最大公约数
    this
    tip 2:找最小公倍数之Boost
    tip 1:一个简单的将int型转换成char的方法
    Item47
    成员函数模板
    item44:将与参数无关的代码抽离template
  • 原文地址:https://www.cnblogs.com/rong88/p/12092753.html
Copyright © 2011-2022 走看看