本文最后更新于:December 3, 2021 pm
Apache ECharts一个基于 JavaScript 的开源可视化图表库。ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE9/10/11,Chrome,Firefox,Safari等),底层依赖矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。还提供了自定义系列,只需要传入一个renderItem函数,就可以从数据映射到任何你想要的图形,更棒的是这些都还能和已有的交互组件结合使用而不需要操心其它事情。
目录
本博客是参考官方文档 边学边记录的,仅代表当时学习时的理解。(#^.^#)嘻嘻
1.获取
在 https://www.jsdelivr.com/package/npm/echarts 选择 dist/echarts.js
,点击并保存为 echarts.js
文件。
Echarts 文件下载(2021/11/22)
5.2.1(16884472次):点击访问
5.2.2(10646611次):点击访问
访问页面后,直接保存页面(Ctrl+S)即可。
2.快速上手
2.1 引入Echarts文件
和正常网页中引入一样:
| <script src="echarts.min.js"></script>
|
2.2 简单绘制图表
| <body> <div id="main" style="width: 600px;height:400px;"></div> </body>
|
再通过 echarts.init 方法初始化一个 echarts 实例并通过 setOption 方法生成一个简单的柱状图(先不管这是什么,看效果就行)。完整代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>ECharts</title> <script src="echarts.js"></script> </head> <body> <div id="main" style="width: 600px;height:400px;"></div> <script type="text/javascript"> var myChart = echarts.init(document.getElementById('main'));
var option = { title: { text: 'ECharts 入门示例' }, tooltip: {}, legend: { data: ['销量'] }, xAxis: { data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'] }, yAxis: {}, series: [ { name: '销量', type: 'bar', data: [5, 20, 36, 10, 10, 20] } ] };
myChart.setOption(option); </script> </body> </html>
|
后面就不再详写option
中的代码了,防止篇幅过长。可自行写上方便查看效果。
3.入门基础
3.1 图表容器大小
3.1.1 定义有宽度和高度的父容器(推荐)
在 HTML 中先定义一个 <div> 节点,并且通过 CSS 使得该节点具有宽度和高度。初始化的时候,传入该节点,图表的大小默认即为该节点的大小,除非声明了 opts.width 或 opts.height 将其覆盖。
| <div id="main" style="width: 600px;height:400px;"></div> //容器 <script type="text/javascript"> var myChart = echarts.init(document.getElementById('main')); </script>
|
📢 使用这种方法在调用 echarts.init 时需保证容器已经有宽度和高度了。
3.1.2 指定图表的大小
注意:这里和上面说的容器不是同一个东西,图表是包含在容器中的。
如果图表容器不存在宽度和高度,或者,你希望图表宽度和高度不等于容器大小,也可以在初始化的时候指定大小。
| <div id="main" style="width: 600px;height:400px;"></div> //容器 <script type="text/javascript"> var myChart = echarts.init(document.getElementById('main'),null,{ width: 500, height: 300 }); </script>
|
最终的效果是看图表的大小。
3.1.3 响应式大小
在有些场景下,我们希望当容器大小改变时,图表的大小也相应地改变。监听图表容器的大小并改变图表大小。
比如,图表容器是一个高度为 400px、宽度为页面 100% 的节点,你希望在浏览器宽度改变的时候,始终保持图表宽度是页面的 100%。这种情况下,可以监听页面的 window.onresize 事件获取浏览器大小改变的事件,然后调用 echartsInstance.resize 改变图表的大小。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>ECharts</title> <script src="echarts.min.js"></script> <style> #main,html,body{ width: 100%; } #main{ height: 400px; } </style> </head> <body> <div id="main"></div> <script type="text/javascript"> var myChart = echarts.init(document.getElementById('main')); window.onresize=function(){ myChart.resize(); }; var option = { title: { text: 'ECharts 入门示例' }, tooltip: {}, legend: { data: ['销量'] }, xAxis: { data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'] }, yAxis: {}, series: [ { name: '销量', type: 'bar', data: [5, 20, 36, 10, 10, 50] } ] };
myChart.setOption(option); </script> </body> </html>
|
这种情况下,不能定图表的大小,不然最后的效果大小就是你定的大小,就不会响应式了。
3.1.4 为图表设置特定大小
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>ECharts</title> <script src="echarts.min.js"></script> <style> #main,html,body{ width: 100%; } #main{ height: 400px; } </style> </head> <body> <div id="main"></div> <script type="text/javascript"> var myChart = echarts.init(document.getElementById('main')); myChart.resize({ width: 700, height: 400 }); window.onresize=function(){ myChart.resize(); };
myChart.setOption(option); </script> </body> </html>
|
在本示例中可以看见,当设定了图表大小时,响应式就失效了。
4.1.5 容器节点被销毁以及被重建时
假设页面中存在多个标签页,每个标签页都包含一些图表。当选中一个标签页的时候,其他标签页的内容在 DOM 中被移除了。这样,当用户再选中这些标签页的时候,就会发现图表“不见”了。
本质上,这是由于图表的容器节点被移除导致的。即使之后该节点被重新添加,图表所在的节点也已经不存在了。
正确的做法是,在图表容器被销毁之后,调用 echartsInstance.dispose 销毁实例,在图表容器重新被添加后再次调用 echarts.init 初始化。
在容器节点被销毁时,总是应调用 echartsInstance.dispose 以销毁实例释放资源,避免内存泄漏。