Echarts
Echarts
一个基于 JavaScript 的开源可视化图表库。
安装方式
1 | npm init -y //初始化项目 |
快速上手
参考echarts官网上的快速上手
- 引入js文件
- 创建一个div来做dom容器;容器必须设置宽高,不然不会出来;
- 逻辑处理
1 | <div id="box" style="width:500px;height:500px"></div> |
1 | <script src="./echarts.min.js"></script> |
series 配置系列列表
echarts官网-->文档-->配置项手册;其实大部分的图只是series差别比较大,别的几乎一样;
- 是一个数组对象 每一个对象{}里面就是一系列数据,都有着自己的data,type…
- label设置提示文本
- itemStyle设置柱子的风格
- markPoint与markLine 设置最大值,最小值与平均值
1 | //快速上手中,仅修改series配置列表,配置如下: |
grid 配置网络坐标系
用来调整坐标系的位置。
Tip:top、bottom、left、right 在哪个里面都可以用的,用来调整位置;
1 | // 配置网络坐标系 |
tooltip 配置提示语
1 | // 配置提示语 |
toolbox 工具栏
内置有导出图片,数据视图,动态类型切换,数据区域缩放,重置五个工具
1 | // 工具箱 |
legend 图例组件
图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。
1 | // 配置系列列表(这个是数组对象) |
大致效果图如下图所示:

以上内容都可以在echarts官网-->文档-->配置项手册中找到;
Echarts事件
以下内容都可以在echarts官网-->文档-->API中找到;
- 监听用户的全部事件
1 | // 4.监听用户的点击事件 |
- 监听用户的部分事件
1 | // 筛选 {seriesName:"成绩"}的触发点击事件 |
- 移除监听事件
1 | // 4.2 移除监听事件 |
- 添加加载中提示
1 | // 1.初始化echarts实例 |
1 | // 2.绘制图形 |
- Echarts随窗口大小改变(若box固定宽高,则是改变不了的)
1 | // 5.改变大小 |
以上内容全部代码
- css
1 | * { |
- html
1 | <div id="box"></div> |
- js
1 | <script src="./echarts.min.js"></script> |
散点(气泡)图
身高体重根据bmi,超重的大一点,为红色;不超重的小一点,为绿色;
- css
1 | *{ |
- html
1 | <div id="box"></div> |
- js
1 | <script src="./echarts.min.js"></script> |
大致效果图如下图所示:

在vue中使用Echarts
基本使用
- 下载:
npm install echarts - 在
main.js入口文件里引入
1 | import * as echarts from "echarts"; |
- 使用
1 | this.myChart = this.$echarts.init( |
获取Echarts的base64地址
通过官网的
getDataURL来获取绘制图像的地址
注意事项:如果在mounted 时候就要获取base64地址会出现如下情况:
- 执行getDataURL之前,ECharts的option必须设置好,否则图片出现空白(只有坐标系,没有数据)
把getDataURL这个方法理解成为是一个相机,而你的 展示的图表是一个人在摆姿态。也就是 当照相机 按下快门的一瞬间,你这个人 姿态还没有摆好就已经被拍照了 那么自然 洗出来的 图片就没有效果了
期望的:

通过base64地址,在新的tab页展现的:

解决方法
- 延迟 相机的 拍照时间
1 | this.myChart.setOption(option); |
- 取消 图表里面动画效果,就是在 option 中添加一个 animation: false 属性 就可以解决这个问题
我们这次是通过点击按钮获取base64地址,所以不会出现此上提及的问题;但是点击的时候需要通过Echarts的getDataURL来获取地址,所以我将Echarts存到了data里面
1 | <template> |
通过select切换Echarts图(不改变数据,只切换图形)
我这里用到了两种方法:
- 通过修改series里面的type,即给series里面的type为一个变量,通过修改这个变量为bar,line,pie等来切换图形;
- 重新设置options,echarts所有的配置项都在options,改变这个就相当于改变了echarts;同上面的方法相比,上面的缺点是切换为饼状图还会有坐标轴,不妥;此方法的缺点是,代码重复的多,好多个options;
以上方法都有个坑:
控制台会提示:There is a chart instance already initialized on the dom.
虽然不影响切换效果,但是总感觉不好
坑的解决方法:
- 每次绘制echart前,要dispose()销毁实例一下,否则图会重叠在一起;
方案一效果:

方法一代码:
1 | <template> |
方案二效果:

方法二代码:
1 | <template> |
如何自定义tooltip formatter
方式有很多,我更趋向回调函数的方式,因为简单明了;
1 | { |
通过上面切换Echrarts图的方法二来实验,输出如下:

- 拼凑:
1 | formatter: (params) => { |

- 将tooltip限制在图表区域内:
当return的东西足够多,会超出浏览器的clientHieght范围

1 | //相关代码 |
解决方法:
1 | tooltip: { |

上面的实例就是
1 | tooltip: { |
- 不希望以”< /br >”而是以”\n”作为换行符
1 | tooltip: { |
参考文献
echarts下载图片,getDataURL获取base64地址
[echarts]clear和dispose的区别和使用场景