echarts折线图配置玩一玩

2,740 阅读3分钟

echarts官方文档:www.echartsjs.com/zh/option.h…

echarts官方案例:www.echartsjs.com/examples/zh…

不知道怎么讲,就写一下需求怎么实现的吧。

初始需求:

1、首先从官网复制一个折线图出来,长这样

代码:

            myChart.setOption({
                xAxis: {
                    type: "category",
                    boundaryGap: false,
                    data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
                },
                yAxis: {
                    type: "value"
                },
                series: [
                    {
                        data: [820, 932, 901, 934, 1290, 1330, 1320],
                        type: "line",
                        areaStyle: {}
                    }
                ]
            });

2、改变折线图样式

a. 将区域颜色改成绿色渐变

areaStyle官方文档:www.echartsjs.com/zh/option.h…

将series中的areaStyle属性修改如下

areaStyle: {
    color: {
        type: 'linear',
        x: 0,
        y: 0,
        x2: 0,
        y2: 1,
        colorStops: [{
            offset: 0, color: 'rgba(54,179,116,1)' // 0% 处的颜色
        }, {
            offset: 1, color: 'rgba(54,179,116,0)' // 100% 处的颜色
        }],
        global: false // 缺省为 false
    }
}

效果图:

b. 折线样式修改

lineStyle官方文档:www.echartsjs.com/zh/option.h…

在series中加入lineStyle

lineStyle: {
    color: '#36B374',
    width: 2
},

效果如下:

c. 折线拐点标志样式修改

itemStyle官方文档:www.echartsjs.com/zh/option.h…

在series中加入itemStyle

itemStyle: {
                    color: '#fff', // 拐点颜色
                    borderColor: 'rgba(54,179,116,1)',
                    borderWidth: 1
                },

效果如下:

可以看到,这个只改变了颜色和边框颜色,没有改变大小

需要在series中加入另一属性symbolSize

    symbolSize: 8,

效果如下:

c. 显示出每个拐点的数值

根据官方案例可以得出,在series中新增label属性即可显示

label: {
    show: true,
    position: 'top',
    color: 'rgba(54,179,116,1)'
},

效果如下:

d. Y轴X轴样式修改

  • 多了刻度线,把刻度线去掉

    X轴刻度线官方文档:www.echartsjs.com/zh/option.h…

    Y轴文档也可由此找到

    在yAxis和xAxis中分别加入axisTick属性

    axisTick: {
        show: false
    }
    
  • X轴颜色样式修改

    在yAxis中加入axisLine属性

    axisLine: {
        lineStyle: {
            color: "#999999"
        }
    },
    
  • Y轴轴线去掉

    Y轴文档:www.echartsjs.com/zh/option.h…

    在yAxis中加入axisLine属性

    axisLine: {
        show: false
    },
    
  • 网格样式修改

    Y轴网格线官方文档:www.echartsjs.com/zh/option.h…

    在yAxis中加入splitLine属性

    splitLine: {
        lineStyle: {
        color: 'rgba(0, 0, 0, 0.08)',
        width: 0.7,
        type: 'solid'
        }
    }
    

    效果如下:

3、当数据很大或者数据起伏不大时,拐点上的数字会连在一起不美观,需要优化

首先想到的是将数字旋转30°,于是去找属性,找到了rotate

将itemStyle的label属性中加入rotate属性,即:

label: {
    show: true,
    position: "top",
    color: "rgba(54,179,116,1)",
    rotate: 30
},

效果如下:

4、结果认为还是不理想,所以后面需求改为支持第一屏只展示5个月的数据,可以左右滑动

dataZoom缩放官方文档:www.echartsjs.com/zh/option.h…

根据需求,我们选择inside类型

在series同级加入dataZoom属性

dataZoom: [
    {
        zoomLock: true,  // 只滑动,不缩放,因为缩放又会出现上面的状况
        type: 'inside',
        start: 60, // 数据窗口范围的起始百分比
        end: 100 // 数据窗口范围的结束百分比
    }
],

效果如下:

5、左右滑动时,Y轴最小值和最大值会根据当屏值发生变化,而产品需要不变

想到固定最小值和最大值,找到属性yAxis.min和yAxis.max

yAxis中插入这两种属性

min: 8000000,
max: 13203434

效果如下:

6、点击拐点时需要弹出提示如下图

根据官方案例可知tooltip属性能实现

tooltip官方文档www.echartsjs.com/zh/option.h…

在series同级加入tooltip属性

tooltip: {
    show: true,
    trigger: 'item',
    confine: true,
    mousemove: {
        type: 'line'
    },
    triggerOn: 'mousemove',
    formatter: params => {
        return `<p>${params.name}</p><p>黑名单</p><p>${params.value}名</p>`;
    }
},

效果如下:

github代码库: github.com/yanzhihu/vu…

最后:柱状图与折线图放一个图表里及三个Y轴的官方demo放这里

www.echartsjs.com/examples/zh…

结束,感谢您的阅读!