一. 邂逅 ECharts
1.认识ECharts
什么是
Echarts:ECharts(全称EnterpriseCharts)是企业级数据图表。官方的解释是:一个基于JavaScript的开源可视化图表库ECharts可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE6/7/8/9/10/11,chrome,firefox,Safari等)ECharts底层依赖轻量级的ZRender图形库,可提供直观,生动,可交互,可高度个性化定制的数据可视化图表
ECharts的历史:ECharts由百度团队开源2018年初,捐赠给
Apache基金会,成为Apache软件基金会孵化级项目2021年1月26日晚,
Apache基金会官方宣布ECharts项目正式毕业,成为Apache顶级项目2021年1月28日,
ECharts5线上发布会举行
2.ECharts应用场景
ECharts应用场景:- 智慧城市、园区、航运、公安、机房、监所、电力、物业、应急管理等多个领域的数据可视化展示

3.ECharts 的特点
- 丰富的图表类型
- 提供开箱即用的 20 多种图表和十几种组件,并且支持各种图表以及组件的任意组合
- 强劲的渲染引擎
Canvas、SVG双引擎一键切换,增量渲染等技术实现千万级数据的流畅交互
- 简单易容,上手容易
- 直接通过编写配置,便可以生成各种图表,并且支持多种集成方式
- 活跃的社区
- 活跃的社区用户保证了项目的健康发展,也贡献了丰富的第三方插件满足不同场景的需求
- 等等
二. EChars5初体验
1.初体验ECharts
集成
Echarts的常见方式:- 通过
npm获取echarts:npm install echarts --save
- 通过
jsDelivr等CDN引入
- 通过
初体验
Echarts(容器必须设高度)

2.ECharts 渲染原理
浏览器端的图表库大多会选择
SVG或者Canvas进行渲染ECharts最开始时一直都是使用Canvas绘制图表。直到ECharts v4.0版本,才发布支持SVG渲染器,默认是canvas渲染器SVG和Canvas这两种使用方式在技术上是有很大的差异的,EChart能够做到同时支持,主要归功于ECharts底层库ZRender的抽象和实现ZRender是二维轻量级的绘图引擎,它提供Canvas、SVG、VML等多种渲染方式因此,
Echarts可以轻松的互换SVG渲染器 和Canvas渲染器。切换渲染器只须在初始化图表时设置renderer参数 为canvas或
svg即可
3.选择哪种渲染器
Canvas更适合绘制图形元素数量较多的图表。如:热力图、炫光尾迹特效、地理坐标系、平行坐标系上的大规模线图等SVG具有重要的优势:它的内存占用更低、适配性、扩展性性好,放大缩小图表不会模糊- 选择哪种渲染器? 可以根据软硬件环境、数据量、功能需求综合考虑:
- 在软硬件环境较好,数据量不大的场景下,两种渲染器都可以适用,并不需要太多纠结
- 在软硬件环境较差,出现性能问题需要优化的场景下,可以通过试验来确定使用哪种渲染器。比如有这些经验:
- 在需要创建很多
ECharts实例且浏览器易崩溃的情况下(可能因为Canvas数量多导致内存占用超出手机承受能力),可以使用SVG渲染器来进行改善 - 数据量较大(经验判断 >
1k)、较多交互时,建议选择Canvas渲染器
- 在需要创建很多
三. ECharts 组件和配置
1.认识option配置项( 组件 )
backgroundColor:设置直角坐标系内绘图区域的背景grid选项 :直角坐标系内绘图区域yAxis选项 :直角坐标系grid中的y轴xAxis选项 :直角坐标系grid中的x轴title:图表的标题legend:图例,展现了不同系列的标记、颜色和名字tooltip:提示框toolbox:工具栏,提供操作图表的工具series:系列,配置系列图表的类型和图形信息数据visualMap:视觉映射,可以将数据值映射到图形的形状、大小、颜色等geo:地理坐标系组件。用于地图的绘制,支持在地理坐标系上绘制散点图,线集

2.Grid网格配置 (组件)
grid选项 :直角坐标系内绘图区域show: 是否显示直角坐标系网格。boolean类型left、right、top、bottom:grid组件离容器左右上下的距离。string | number类型containLabel:grid区域是否包含坐标轴的刻度标签。boolean类型backgroundColor:Color类型,网格背景色,默认透明

3.坐标系配置(组件)
xAxis选项 :直角坐标系grid中的x轴show:是否显示x轴,boolean类型name:坐标轴名称type: 坐标轴类型,string类型value数值轴,适用于连续数据category类目轴,适用于离散的类目数据。类目数据可来源xAxis.data 、series.data 或 dataset.source 之一
data:类目数据,在类目轴(type: 'category')中有效,array类型axisLine: 坐标轴轴线相关设置,object类型axisTick:坐标轴刻度相关设置,object类型axisLabel:坐标轴刻度标签的相关设置,object类型splitLine:坐标轴在grid区域中的分隔线,object类型- ...
yAxis选项 :直角坐标系grid中的y轴,参数基本和xAxis差不多
4.series 系列图配置(组件)
series:系列,配置系列图表的类型和图形信息数据。object[]类型,每个object具体配置信息如下name:系列名称,用于tooltip的显示,legend的图例筛选等type:指定系列图表的类型,比如:柱状图、折线图、饼图、散点图、地图等data:系列中的数值内容数组。数组中的每一项称为数据项- 一维数组:
[ value , value ]。(一维数组是二维数组的简写 ) - 二维数组
[ [index, value ], [index, value ] ], 注意index从0开始[ [*x*, y, value ], [ *x*, y , value ] ], 注意这里的x和y可以表示x轴和y轴,也可以表示 经度 和 纬度
- 对象类型( 推荐 )。
[ { value: x, name: x, label: { },itemStyle:{}、 emphasis:{} .... } ]
- 一维数组:
label:图形上的文本标签(就近原则,data中的比series优先级高)itemStyle:图形样式emphasis:高亮的图形样式和标签样式coordinateSystem:该系列使用的坐标系,默认值为二维的直角坐标系(笛卡尔坐标系)

5.series 高亮的样式(emphasis)
鼠标悬浮到图形元素上时,高亮的样式
默认情况高亮的样式是根据普通样式自动生成。但是也可自己定义
自定义主要是通过
emphasis属性来定制emphsis的结构和普通样式结构相同,如下图:
ECharts4以前,高亮和普通样式的写法,如下图这种写法 仍然被兼容,但是不再推荐了

多数情况下,开发者只配置普通状态下的样式,让高亮的样式是根据普通样式自动生成
6.标题、图例、提示配置(组件)
title:图表的标题,object类型text、top、left ...
legend:图例,展现了不同系列的标记、颜色和名字,object类型show、icon、formatter、textStyle、itemWidth 、itemGap...
tooltip:提示框组件,object类型show、 trigger、axisPointer ...

7.Color 和 渐变色
ECharts中Color支持的格式:RGB、RGBA、关键字、十六进制格式
ECharts中的渐变色线性渐变,前四个参数分别是
( x, y ),( x2, y2 )范围从0 – 1径向渐变,前三个参数分别是圆心
x,y和半径,取值同线性渐变
四. Echarts图表实战
1.柱形图
ECharts绘制 柱状图

2.折线图
ECharts绘制 折线图

3.饼图
ECharts绘制 饼图

4.地图-绘制
ECharts可以使用GeoJSON格式的数据作为地图的轮廓,可以获取第三方的GeoJSON数据注册到ECharts中:https://github.com/echarts-maps/echarts-china-cities-js/tree/master/js/shape-with-internal-bordershttps://datav.aliyun.com/portal/school/atlas/area_selector
ECharts绘制地图步骤(方式一):- 拿到
GeoJSON数据 - 注册对应的地图的
GeoJSON数据(调用setOption前注册) - 配置
geo选项
- 拿到
ECharts绘制地图步骤(方式二):拿到
GeoJSON数据注册对应的地图的
GeoJSON数据(调用setOption前注册)配置
map series
5.geo 和 map series绘制地图的区别
geo地理坐标系组件会生成一个
geo地理坐标系组件地理坐标系组件用于地图的绘制
支持在地理坐标系上绘制散点图,线集
该坐标系可以共其它系列复用
注意:其他系列在复用该地理坐标系时,
series的itemStyle等样式将不起作用
map series默认情况下,
map series会自己生成内部专用的geo地理坐标系组件地理坐标系组件用于地图的绘制
地图主要用于地理区域数据的可视化,配合
data使用配合
visualMap组件用于展示不同区域的人口分布密度等数据
6.地图-着色
地图着色,可以通过
itemStyle属性中的areaColor和borderColor属性areaColor:地图区域的颜色borderColor:图形(边界)的描边颜色

7.地图-数据可视化
给地图添加数据,并可视化展示
添加一个
map series配置地图样式
添加地图所需的数据
添加
visualMap视觉映射

8.地图-涟漪特效散点图
- 给地图添加涟漪特效的散点图数据,并可视化展示
- 添加一个
effectScatter series - 指定使用的地理坐标系
- 添加地图所需的数据
- 修改标记的大小和样式
- 修改默认的
tooltip提示
- 添加一个


五. ECharts其它补充
1.Echarts 常见 API
- 全局
echarts对象,在script标签引入echarts.js文件后获得,或者在AMD环境中通过require('echarts')获得echarts.init( dom, theme, opts ):创建echartsInstance实例echarts.registerMap( mapName, opts ):注册地图echarts.getMap( mapName ):获取已注册地图
- 通过
echarts.init创建的实例(echartsInstance)echartsInstance.setOption(opts):设置图表实例的配置项以及数据,万能接口echartsInstance.getWidth()、 echartsInstance.getHeight():获取ECharts实例容器的宽高度echartsInstance.resize(opts):改变图表尺寸,在容器大小发生改变时需要手动调用echartsInstance.showLoading()、 echartsInstance.hideLoading():显示和隐藏加载动画效果echartsInstance.dispatchAction():触发图表行为,例如:图例开关、显示提示框showTip等echartsInstance.dispose:销毁实例,销毁后实例无法再被使用echartsInstance.on():通过on方法添加事件处理函数,该文档描述了所有ECharts的事件列表
2.响应式Echarts图表
响应式图片的实现步骤:
- 图表只设置高度,宽度设置为
100%或 不设置 - 监听窗口的
resize事件,即监听窗口尺寸的变化(需节流) - 当窗口大小改变时,然后调用
echartsInstance.resize改变图表的大小
- 图表只设置高度,宽度设置为
另外需要注意的是:
- 在容器节点被销毁时,可以调用
echartsInstance.dispose以销毁echarts实例释放资源,避免内存泄漏
jsvar myChart = echarts.init(document.getElementById('main'), null, { renderer: 'svg' }) window.addEventListener('resize', () => { console.log('resize') myChart.resize({ height: '600px' }) })- 在容器节点被销毁时,可以调用
