Echarts学习笔记
快速上手
引入ECharts
在 https://www.jsdelivr.com/package/npm/echarts 选择 dist/echarts.js,点击并保存为 echarts.js 文件。
也可以引入在线文件(不推荐使用,版本无法控制)
1 | <script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script> |
新建一个 index.html 文件,为 ECharts 准备一个定义了高宽的 DOM 容器,通过 echarts.init 方法初始化一个 echarts 实例并通过 setOption 方法生成一个简单的柱状图。

1 |
|
模块化安装echarts
开发环境使用了
npm或者yarn等包管理工具,并且使用 Webpack 等打包工具进行构建,将引入 Apache EChartsTM 并通过 treeshaking 特性只打包需要的模块。
NPM 安装 ECharts
1 | npm install echarts --save |
引入Echarts
1 | import * as echarts from 'echarts'; |
按需引入 ECharts 图表和组件
上面的代码会引入 ECharts 中所有的图表和组件,但是假如你不想引入所有组件,也可以使用 ECharts 提供的按需引入的接口来打包必须的组件。
1 | // 引入 echarts 核心模块,核心模块提供了 echarts 使用必须要的接口。 |
**注意:**需要注意的是为了保证打包的体积是最小的,ECharts 按需引入的时候不再提供任何渲染器,所以需要选择引入 CanvasRenderer 或者 SVGRenderer 作为渲染器。这样的好处是假如你只需要使用 svg 渲染模式,打包的结果中就不会再包含无需使用的 CanvasRenderer 模块。
基础使用
通用配置
任何一种类型的图表都可以使用的配置
常见效果
标记:最大值最小值、平均值。
markPount,markLine显示:数值显示、柱宽度、横向。
label,barWidth,更改x轴和y轴的角色

1 |
|
标题title
表格的标题
文字样式
textStyle标题边框
borderWidth、borderColor、borderRadius标题位置
left、top、right、bottom水平居中,垂直居中
textAlign、textVerticalAlign
1 | title: { // 标题设置 |
提示框tooltip
tooltip:提示框组件,用于配置鼠标滑过或者点击图标时的显示框
触发类型
item、axis前者鼠标移到图标上才有显示框,后者只要是在轴上就有显示框触发时机
triggerOn:mouseover/click鼠标移动上去显示、点击才会显示格式化
formatter设置字符串模板、回调函数。注意字符串模板{a}在不同类型的表格中代表的意义是不同的。

1 | tooltip: { |
图例legend
legend:图例,用于筛选系列,需要和series配合使用。
legend中的data是一个数组
legend中的data的值需要和series数组中某组数据的name值一致
1 | legend: { // 图例, 图例中的data数据来源于series中每个对象的name, |
工具栏toolbox
toolbox:ECharts提供的工具栏
导出图片
saveAsImage: {}。下载图片按钮数据视图
dataView: {}。点击可以看到原始数据并修改查看效果重置数据
restore: {}。重置原始数据区域缩放
dataZoom: {}。框选缩放特定区域动态切换图表类型
magicType: {type: ['bar', 'line']}。

1 | toolbox: { |
柱状图
住柱状图(或称条形图)是一种通过柱形的长度来表现数据大小的一种常用图表类型。设置柱状图的方式,是将
series的type设为'bar'。

1 |
|
折线图
折线图常用来分析数据随着时间变化地方。series设置****
标记:最大值最小值、平均值、标注区间
markPoint、markLine、markArea标记最大值最小值及区间线条控制:平滑曲线、线条风格
smooth、lineStyle折线变曲线,线条颜色线型填充风格
areaStyle:{}折线与x轴围成一个区域紧挨边缘
boundaryGapx轴的第1个元素是否与y轴有距离缩放
scale数值轴的元素不从0开始堆叠图第二组数据
stack:"all"只要series中两组数据的stack属性相同,那么第二组数据就不是从0开始,而是从第一组对应的数据开始进行数值的累加(stack值可以是任意)


1 |
|
散点图
散点图可以帮助我们推断出变量间的相关性。比如身高和体重的关系。series设置
****
xAxis与yAxis都是数值轴。
type:'value'缩放
scale:true数值轴的元素不从0开始气泡图控制散点的大小颜色
symbolSize:30或者设置回调函数symbolSize: function (arg) { return arg[1]/100}(arg是默认传递的参数)气泡图控制散点的颜色
itemStyle:{color:'red'}或者设置回调函数itemStyle: {color: function (arg) {if (arg.data[1] > 28) {return 'red'}else{return 'green'}}

- 涟漪动画,需要将series里面的type设置为
type;'effectSkatter';涟漪动画时, 散点的缩放比例
rippleEffect: {scale: 10 };出现涟漪动画的时机 showEffectOn: 'emphasis'(render渲染完成后, emphasis鼠标移动上去产生

1 |
|
直角坐标系的常用配置(柱状图,折线图,散点图)
网格grid
grid是用来控制直角坐标系的布局和大小。x轴和y轴就是在grid的基础上进行绘制的。
显示grid。
show:true边框。
borderWidth、borderColor位置和大小。
left、top、right、bottom和width、height

1 | // 直接配置在option下 |
坐标轴axis
坐标轴分为x轴和y轴。一个grid最多有两种位置的x轴和y轴。
坐标轴类型
type:value:数值轴,自动会从目标数据series中读取数据。type:category:类目轴,该类型必须通过data设置类目数据。坐标轴的显示位置。
xAxis可取值top或者bottom;yAxis可取值left或者right。

1 | // 直接配置在option下 |
区域缩放dataZoom
dataZoom用于区域缩放,对数据范围过滤,x轴和y轴都可以拥有。dataZoom是一个数组,意味着可以配置多个区域缩放器。
类型
type:sllide坐标轴下方显示滑块,鼠标可以拖动,type:indide内置,不显示滑块,依靠鼠标滚轮或者双指缩放。指明缩放产生作用的轴。
xAxisIndex:0设置缩放组件控制的是哪个x轴,一般写0,yAxisIndex:0设置缩放组件控制的是哪个y轴,一般写0。(配置多个缩放效果必须指定,配置单个缩放不指定默认x轴y轴都缩放)指明初始状态的缩放情况。
start数据窗口范围 的起始百分比;end数据窗口范围的结束百分比。
1 | // 直接配置在option下 |
饼图
饼图可以很好的帮助用户快速了解不同分类数据的占比情况。series中****
数据是由name和value组成的对象所组成的数组
无需配置xAxis和yAxis
显示文字,label属性配置
show:true格式化formatter: function(arg){return arg.name+ '平台' +arg.value + '元\n' + arg.percent + '%'}圆的半径
radius: 20或者radius:20%圆环
radius: ['50%', '75%']第0个元素代表的是內圆的半径 第1个元素外圆的半径南丁格尔图
roseType: 'radius',百分比越大半径越大选中效果,能够将选中的区域偏离圆点一小段距离。多个选中
selectedMode: 'multiple',单个selectedMode: 'single,选中偏移距离selectedOffset: 30

1 |
|
地图
矢量地图的实现。地图数据主要来自百度地图API,高德地图API,或者矢量数据。
- 准备好矢量地图json文件
- 使用Ajax获取json文件
echarts$.get('json/map/china.json', function (ret) { }

在回调函数中往echarts全局对象注册地图的json数据
echarts.registerMap('chinaMap', ret)在geo下设置
type:'map',map:'chinaMap'允许缩放以及拖动的效果geo下设置
roam: true展示标签geo下设置
label: {show: true }初始化的缩放比例geo下设置
zoom: 1地图中心点的坐标geo下设置
center: [87.617733, 43.792818]经纬度坐标。坐标值可以通过地图矢量数组得到

1 |
|
雷达图
雷达图可以用来分析多个维度的数据与标准数据的对比情况。在sereies下设置****
定义各个维度的最大值radar下设置
indicator:[{name:'使用性',max:100},{name:'耐久性',max:100},......]配置雷达图最外层的图形radar下设置
shape: 'polygon'或者circle准备具体的数据
data:[{name:'华为',value:[80,90,...],{name:'中心',value:[85,85,...]}......]将每一个产品的雷达图形成阴影的面积,sereies下设置
areaStyle: {}显示数值sereies下设置
label: {show: true }

1 |
|
仪表盘
仪表盘主要用在进度把控及数据范围的检测。在series下设置****
设置给series下的data,
{value: 97,itemStyle: { // 指针的样式color: 'pink' // 指针的颜色}min max 控制仪表盘数值范围
min:50

1 |
|
进阶
主题
内置主题
Echarts中默认内置了两套主题:
light、dark
在初始化对象方法init中可以指明
1 | var mCharts = echarts.init(document.querySelector("div"), 'light') |
自定义主题

1.在主题编辑器中编辑主题
2.下载主题,是一个js文件
3.引入主题js文件
4.在init方法中使用主题
调色盘
主题调色盘。调色盘是一个color数组,主题调色盘定义在注册主题的对象中(下载的自定义主题js文件)

1 | echarts.registerTheme('itcast', { |
全局调色盘。全局调色盘会覆盖主题调色盘。我们可以直接在
option中定义color数组,来覆盖图标的一部分颜色。

1 | var option = { |
**局部调色盘。**直接定义在series中的colors数组。由于调色盘采取就近原则,因此局部调色盘会覆盖全局调色盘。

1 | var option = { |
颜色渐变
线型渐变。配置在series中的
itemStyle对象中的color属性上。

1 | itemStyle: { |
径向渐变。配置在series中的
itemStyle对象中。

1 | itemStyle: { |
样式
优先级搞,会覆盖三种调色盘效果。
直接样式:
itemStyle、textStyle、lineStyle、areaStyle、label高亮样式(鼠标移动到表上显示的样式)。在
emphasis中包裹以上属性。

1 |
|
自适应
当浏览器大小发生变化时,图表大小也会跟着变化。图表父元素宽度设置100%或者不设置,监听window窗口大小变化的事件,调用resize()方法重新生成

1 |
|
动画
加载动画
Echarts已经内置好了加载数据的动画,我们只需要在获取数据之前加载动画,在获取数据之后隐藏动画。
显示加载动画
mCharts.showLoading()隐藏加载动画
mCharts.hideLoading()

本案例通过ajax加载服务器数据
1 |
|
增量动画
图表展示出来之后,修改数据或者配置,Echarts会找到两组数据之间的差异,然后或自动通过合适的动画去表现数据的变化。
增量动画
myCharts.setOption(option)(无论什么时候定义配置变量名称都是option)所有数据的更新都通过setOption实现。
新旧option的关系并不是相互覆盖的关系, 是相互整合的关系。
setOption 可以设置多次。

1 |
|
动画配置
常用动画配置。在option下配置。
开启动画
animation:true动画时长
animationDuration:5000也可以跟回调函数,默认传参打印如下缓动动画
animationEasing:'bounceOut'动画阈值
animationThreshold:8单种形式的元素数量大于这个阈值时会关闭动画

1 |
|
交互API
全局echarts对象
全局echarts对象是引入echarts.js文件之后就可以直接使用的对象
init方法。初始化Echasrts实例对象;使用主题。
registerTheme方法。注册主题,只有注册过的主题才能在init方法中使用。
registerMap方法。注册地图数据。geo组件使用地图数据。
connect方法可以实现多图关联。传入联动目标为echarts实例对象,支持数组
  保存图片的自动拼接
  刷新按钮
  重置按钮
  提示框联动、图例选择、数据范围修改等……

1 |
|
echartsInstance对象
echartsInstance对象是通过echarts.init方法调用之后得到的对象
setOption方法。设置或修改图标实例的配置项以及数据;多次调用,合并新旧配置。
resize方法。重新计算和绘制图标;一般和window对象的resize事件结合使用
window.onresize=mychart.resizeon\off方法。绑定或者解绑事件处理函数。
mycharts.on('click',function(arg){})及mycharts.off('click')
  常见鼠标事件click,dbclick,mousedown,mousemove,mouseup等,事件参数。
  echarts常见事件legendselectchanged,datazoom,pieselectchanged,mapselectchanged等

- dispatchAction方法。触发某些行为,使用代码模拟用户的行为.
1 | // 模拟用户的行为 |

clear方法。清除当前实例,会移除实例中所有的组件和图标;清空之后可以再次setOption
dispose方法。销毁示例,没法再次setOption使图表重新显示。

1 |
|