手把手教你用ECharts画折线图

大数据 数据可视化
折线图是一种基础图表,适合表示数据的变化趋势,常用于时间序列数据的表示。

 [[374604]]

在正式学习之前,先来了解一个ECharts官网提供的很好用的功能。该功能可以实时显示代码的效果,使用方法说明如下。

首先,打开ECharts官网,在“实例”菜单中选择任意一个图,如图4-1所示。

https://echarts.apache.org/exampl-es/zh/editor.html?c=area-stack

▲图4-1 ECharts实例

可以看到,左边显示的是option,也就是ECharts的具体配置,右边是对应的可视化图。当我们改变左边的代码时,右边的可视化也会实时改变。当左边的代码有误时,右边则不会显示可视化,如图4-2所示。

▲图4-2 ECharts代码有误时的界面

大家应该已经发现了,可视化设置的大部分参数都在option中,这样可以帮我们省去很多额外的工作,方便快速调试。当我们调试出满意的可视化时,将option加入框架中即可。本文演示的代码和可视化结果图都是基于这个在线工具实现的。

01 基础折线图

在ECharts中,绘制折线图需要将series中的type设置为line,代码如下所示: 

  1. option = {  
  2.     xAxis: {  
  3.         type: 'category',  
  4.         data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']  
  5.     },  
  6.     yAxis: {  
  7.         type: 'value'  
  8.     },  
  9.     series: [{  
  10.         data: [450, 232, 301, 734, 1090, 830, 500],  
  11.         type: 'line'  
  12.     }]  
  13. }; 

其中,series中的data值序列长度需要和xAxis中的data值序列长度一致,x轴和y轴分别为类别(星期)和数值,可视化效果如图4-3所示。

▲图4-3 基础折线图

当我们在series中加入参数smooth: true后,可以得到较为光滑的折线(曲线)。代码如下所示: 

  1. option = {  
  2.     xAxis: {  
  3.         type: 'category',  
  4.         data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']  
  5.     },  
  6.     yAxis: {  
  7.         type: 'value'  
  8.     },  
  9.     series: [{  
  10.         data: [450, 232, 301, 734, 1090, 830, 500],  
  11.         type: 'line',  
  12.         smooth: true  
  13.     }]  
  14. }; 

可视化结果如图4-4所示。

▲图4-4 基础折线图(曲线)

02 多条折线图

至此我们就学会了如何绘制单条折线图,当然我们还会遇到绘制多条折线图的情况,如图4-5所示。

▲图4-5 多条折线图

此时我们在上面单条折线图的代码中做少量修改即可,具体代码如下: 

  1. option = {  
  2.     xAxis: {  
  3.         type: 'category',  
  4.         data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']  
  5.     }, 
  6.      yAxis: {  
  7.         type: 'value'  
  8.     },  
  9.     legend: {  
  10.         data: ['A产品销量', 'B产品销量','C产品销量'],  
  11.         left: 'right' 
  12.  },  
  13.     series: [{  
  14.         name:'A产品销量',  
  15.         data: [550, 232, 311, 764, 1090, 830, 500],  
  16.         type: 'line',  
  17.         smooth: true  
  18.     },  
  19.     {  
  20.         name:'B产品销量',  
  21.         data: [420, 162, 121, 474, 720, 640, 230],  
  22.         type: 'line',  
  23.         smooth: true  
  24.     },  
  25.     {  
  26.         name:'C产品销量',  
  27.         data: [850, 432, 501, 934, 1190, 930, 600],  
  28.         type: 'line',  
  29.         smooth: true  
  30.     }]  
  31. }; 

通过观察可以发现,series中并列了三个字典结构,分别存放A~C产品的数据,我们加入了legend图例,目的是为了区分A~C产品的数据。需要注意的是,A~C产品数据的name字段内容需要和legend中的内容一一对应。

03 堆叠折线图

有时候,我们需要使用堆叠折线图来反映不同项的累加情况,此时可以通过在ECharts的series的每项数据中加入stack和areaStyle参数实现,可视化结果如图4-6所示。

▲图4-6 堆叠折线图

具体实现代码如下: 

  1. option = {  
  2.     xAxis: {  
  3.         type: 'category',  
  4.         data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']  
  5.     },  
  6.     yAxis: {  
  7.         type: 'value'  
  8.     },  
  9.     legend: {  
  10.         data: ['A产品销量', 'B产品销量','C产品销量'],  
  11.         left: 'right'  
  12.     },  
  13.     series: [{  
  14.         name:'A产品销量',  
  15.         data: [550, 232, 311, 764, 1090, 830, 500],  
  16.         type: 'line',  
  17.         smooth: true,  
  18.         stack: '总量', 
  19.          areaStyle: {}  
  20.     },  
  21.     {  
  22.         name:'B产品销量',  
  23.         data: [420, 162, 121, 474, 720, 640, 230],  
  24.         type: 'line',  
  25.         smooth: true,  
  26.         stack: '总量',  
  27.         areaStyle: {}  
  28.     },  
  29.     {  
  30.         name:'C产品销量',  
  31.         data: [850, 432, 501, 934, 1190, 930, 600],  
  32.         type: 'line',  
  33.         smooth: true,  
  34.         stack: '总量',  
  35.         areaStyle: {}  
  36.     }]  
  37. }; 

其中,areaStyle用于对区域填充色彩,如果没有该参数,区域将不会有填充色,感兴趣的读者可以删除该参数看看效果。堆叠的顺序自上到下和数据的顺序相反,例如代码数据中的顺序是ABC,可视化图中自上到下的顺序是CBA。

为了方便辨识堆叠总量数据信息,可以在最上层的数据中加入label参数,同时加入tooltip方便查阅数据,修改后的代码如下: 

  1. option = {  
  2.     xAxis: {  
  3.         type: 'category',  
  4.         data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']  
  5.     },  
  6.     yAxis: {  
  7.         type: 'value'  
  8.     },  
  9.     legend: {  
  10.         data: ['A产品销量', 'B产品销量','C产品销量'],  
  11.         left: 'right'  
  12. },  
  13.     tooltip: {  
  14.         trigger: 'axis',  
  15.         axisPointer: {  
  16.             type: 'cross',  
  17.             label: {  
  18.                 backgroundColor: '#6a7985'  
  19.             }  
  20.         }  
  21.     },  
  22.     series: [{  
  23.         name:'A产品销量',  
  24.         data: [550, 232, 311, 764, 1090, 830, 500],  
  25.         type: 'line',  
  26.         smooth: true,  
  27.         stack: '总量',  
  28.         areaStyle: {}  
  29.     },  
  30.     {  
  31.         name:'B产品销量',  
  32.         data: [420, 162, 121, 474, 720, 640, 230],  
  33.         type: 'line',  
  34.         smooth: true,  
  35.         stack: '总量',  
  36.         areaStyle: {}  
  37.     },  
  38.     {  
  39.         name:'C产品销量',  
  40.         data: [850, 432, 501, 934, 1190, 930, 600],  
  41.         type: 'line',  
  42.         smooth: true,  
  43.         stack: '总量',  
  44.         label: {  
  45.                 normal: {  
  46.                     show: true, 
  47.                     position: 'top'  
  48.                 }  
  49.             },  
  50.         areaStyle: {}  
  51.     }]  
  52. }; 

可视化结果如图4-7所示。

▲图4-7 堆叠柱状图优化版

关于作者:王大伟,毕业于华东理工大学,硕士学历,目前就职于平安金融壹账通,从事数据挖掘算法工作,擅长ECharts、Python、自然语言处理、数据分析挖掘、机器学习。曾获微软最有价值专家(MVP)荣誉称号。

本文摘编自《ECharts数据可视化:入门、实战与进阶》,经出版方授权发布。 

 

责任编辑:庞桂玉 来源: 大数据DT
相关推荐

2021-01-21 09:10:29

ECharts柱状图大数据

2021-06-05 23:51:21

ECharts气泡图散点图

2021-01-27 21:55:13

代码参数值ECharts

2021-08-09 13:31:25

PythonExcel代码

2022-10-19 14:30:59

2011-03-28 16:14:38

jQuery

2021-02-06 14:55:05

大数据pandas数据分析

2021-02-04 09:00:57

SQLDjango原生

2022-08-04 10:39:23

Jenkins集成CD

2021-05-10 06:48:11

Python腾讯招聘

2009-04-22 09:17:19

LINQSQL基础

2012-01-11 13:40:35

移动应用云服务

2021-02-02 13:31:35

Pycharm系统技巧Python

2021-12-11 20:20:19

Python算法线性

2020-03-08 22:06:16

Python数据IP

2021-08-02 23:15:20

Pandas数据采集

2017-10-27 10:29:35

人脸识别UbuntuPython

2021-05-17 21:30:06

Python求均值中值

2017-10-29 21:43:25

人脸识别

2021-01-30 10:37:18

ScrapyGerapy网络爬虫
点赞
收藏

51CTO技术栈公众号