Apache ECharts一个基于JavaScript的开源可视化图表库。
- 提供开箱即用的20多种图表和十几种组件,并且支持各种图表以及组件的任意组合。
- Canvas,SVG双引擎[1]一键切换,增量渲染,流加载等技术实现千万级数据的流畅交互。
- 通过数据集管理数据,支持数据过滤、聚类、回归,帮助实现同一份数据的多维度分析。
- 默认设计遵从可视化原则,支持响应式设计,并且提供了灵活的配置项方便开发者定制。
- 活跃的社区用户保证了项目的健康发展,也贡献了丰富的第三方插件满足不同的场景需求。
- 智能生成的图表描述和贴花图案,帮助视力障碍人士了解图表内容,读懂图表背后的故事。
Canvas,SVG双引擎:
Canvas
- 通过 js 来绘制 2D图形。
- canvas 图像单位是像素。
- canvas 图像绘制完毕之后,浏览器将不再关注它,如果位置发生变换,就需要重新绘制。
SVG
- svg 使用 XML 描述的2D图像。
- svg 是基于 xml 的,所以 svg 中绘制图形还是使用的元素,js 给元素任意添加事件。
- svg 绘制的图像是一个对象,如果对象的属性发生改变,浏览器将重新绘制图形。
SVG与Canvas比较
-
svg 是一种矢量图,而 canvas 依赖于分辨率。所以 svg 放大不会失真,但是 canvas 绘制的图形会失真。
-
svg 支持事件处理器,而 canvas 不支持事件处理器。
-
svg 中的文字独立于图像,文字可保留,可编辑和可搜索,canvas 的文本渲染能力弱。
-
canvas 适合图像密集型的游戏,频繁地重绘图像,svg 绘制的复杂度高时减慢渲染的速度。
-
canvas 绘制的图形可以多种格式 (jpg、png) 保存图片,但是 svg 绘制的只能以 .svg 格式保存,使用时可以引入 html 文件。
-
canvas 适合开发游戏,svg 不适合游戏应用。
扫盲逐渐偏离主题,这里实现一个基础的echarts.js图像
- 步骤1:下载并引入echarts.js文件
- 步骤2:准备一个具备大小的DOM容器
- 步骤3:初始化echarts实例对象
- 步骤4:指定配置项和数据(option)
- 步骤5:将配置项设置给echarts实例对象
1.下载并引入echarts.js
如果只是学习的话,可以下载echarts.js文件,如果是开发需求的话,则直接下载echarts.min.js。后者的效率更加的高效。
下载地址:Apache ECharts
2.准备一个具有大小的DOM容器
如上图所示,这里我们设置了两个方框,方框的大小是确定的,便于之后放入可视化图形。
3.初始化echarts实例对象
//1.初始化对象 var myChart = echarts.init(document.getElementById('MainPU'));
复制
首先我们要包含echarts.min.js文件,然后定义一个具有大小的容器,在进行初始化,初始化代码如上所示,后面’MainPU‘则是div盒子的id名。
4.指定配置项和数据
//2.配置参数 var option = { tooltip: { trigger: 'axis', }, title: { text: 'AQI' }, legend: { //top: "0%", data: ["AQI"], textStyle:{ color: "rgba(255,255,255, 0.5)", fontSize: "8" } }, grid: { left: '10', top: "30", right: '10', bottom: '5', containLabel: true }, xAxis: [ { type: 'category', boundaryGap: false, data: ['0:00', '1:00', '2:00', '3:00', '4:00', '5:00', '6:00',"7:00","8:00","9:00","10:00","11:00","12:00","13:00","14:00", "15:00", "16:00", "17:00", "18:00", "19:00", "20:00", "21:00", "22:00", "23:00"], //文本颜色 axisLabel: { textStyle:{ color: "rgba(255,255,255,0.6)", fontSize: 8 } }, //x轴线的颜色 axisLine:{ lineStyle: { color: "rgba(255,255,255,0.2)" } } } ], yAxis: [ { type: 'value', axisTick: { show: false}, axisLine: { lineStyle:{ color: "rgba(255,255,255,0.1)" } }, axisLabel: { textStyle:{ color: "rgba(255,255,255,0.6)", fontSize: 8 } }, //修改分割线的颜色 splitLine: { lineStyle: { color: "rgba(255,255,255,0.1)" } } } ], series: [ { name: 'AQI', type: 'line', //smooth: true, lineStyle: { color : "#00d887", width: "1" }, areaStyle: { //渐变色,只需要复制即可 color: new echarts.graphic.LinearGradient(0,0,0,1,[{ offset:0, color: "rgba(0, 216, 135, 0.4)" }, { offset:0.8, color: "rgba(0, 216, 135, 0.1)" } ], false ), shadowColor:"rgba(0,0,0,0.1)" }, //这是拐点 symbol: "circle", //拐点大小 symbolSize: 5, //设置拐点颜色和样式 itemStyle:{ color: "#00d887", borderColor: "rgba(221, 220, 107, 0.1)", borderWidth: 8 }, //开始是不显示的 showSymbol: false, data: data }, ] };
复制
这里的option,我选择是一个折线图,你也可以自己在官网上找到自己需要的图,而其中的data部分,我是传了一个参数,数据则是从后端获取的,你这里也可以自己写死。
5.将配置项设置给echarts实例对象
//3.初始化 myChart.setOption(option); //4.让图片跟最屏幕自动适应 window.addEventListener("resize", function(){ myChart.resize(); });
复制
设置到option的参数之后,只需要调用setOption函数,然后在加上屏幕自动适应,就能建立一个响应式布局的echarts图形。
如果想要实现上述代码,在option中的data处的数据,可以改成[23,56,78,67]等等,因为这里我是通过后端传过来的data数据,进行实时显示。
扫盲结束