目录
第一章:ECharts简介
1.1、ECharts概述
- ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。
- ECharts最初由百度团队开源,并于2018年初捐赠给Apache基金会,成为ASF孵化级项目。
- ECharts,全称Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,能够流畅的运行在PC以及移动设备上,兼容当前绝大部分浏览器。
- 为我们许多提供直观,生动,可交互,可高度个性化定制的数据可视化图表。
- 能够支持折线图、柱状图、散点图、K线图、饼图、雷达图、和弦图、力导向布局图、地图、仪表盘、漏斗图、事件河流图等12类图表,
- 同时提供标题,详情气泡、图例、值域、数据区域、时间轴、工具箱等7个可交 互组件,
- 支持多图表、组件的联动和混搭展现。
1.2、ECharts的特性
(1)可视化类型丰富
ECharts提供了很多图的实现方式,包括折线图、柱状图、散点图、饼图、K线图、箱线图、地图、关系图、矩形树图、旭日图、漏斗图、仪表盘等
除此之外,ECharts还提供了自定义系列,从而能扩展出不同的图表
(2)支持多种数据格式
在ECharts 4.0以上版本,ECharts的dataset属性支持传入的数据格式除了二维表,还有键值对等。
(3)千万数据前端流畅展现
ECharts 4.0以上版本的增强渲染技术实现了千万数据量展现时仍然可流畅交互,如缩放和平移等操作。对流加载的支持使数据可以分块加载与渲染,用户体验更佳。
(4)动态数据的动画展示
当数据变化时,ECharts通过内部合适的动画变化展现出新数据的可视化,常常配合时间序列数据展示
(5)更多、更强大的三维可视化
ECharts提供了ECharts GL,可以实现三维地球、建筑等可视化效果,可应用在VR、大屏场景中,效果更加酷炫。
(6)跨平台适用
ECharts具有不同的渲染方案,可以在不同平台良好适配。例如,ECharts 4.0以上版本的SVG渲染使得移动端无须担忧内存,Canvas渲染使PC端可以展现大数据量的特效,且ECharts 4.0开始适配微信小程序
(7)数据深度探索
ECharts支持用户交互挖掘数据中的信息,同时提供图例、视觉映射、数据区域缩放等便捷的交互组件,使用户可以从总览开始挖掘数据展示的细节
(8)无障碍访问
ECharts 4.0遵从W3C指定的无障碍富互联网应用规范集,支持对可视化生成描述,使盲人可以通过语音了解图表的内容。
除以上提到的ECharts特性,还有更多惊喜存在ECharts中,大家在今后的学习中可以慢慢挖掘。
1.3、ECharts 对比 Highcharts
Highcharts是用JavaScript编写的图表库,支持各种常用的可视化。作为同类可视化产品,ECharts 与Highcharts的对比如下
1.图表种类角度
目前ECharts和Highcharts的官网展示的共有可视化图大致相同,不同的是,ECharts 官网还展示了树图、路径图、旭日图、象形图、日历坐标系等,Highcharts官网还展示了子弹图、蜂巢图等。
2.是否免费
ECharts 免费。Highcharts学习免费,商业付费使用
3.可视化技术角度
最新的ECharts 支持Canvas和SVG两种渲染方式,Highcharts支持SVG渲染方式
Canvas(画布)容纳所有UI元素。Canvas是一个挂载了Canvas Component组件的Game Object,所有UI元素都必须是它的子节点,不支持事件处理。
SVG是一种图形文件格式,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形。它是基于XML(Extensible Markup Language),由World Wide Web Consortium(W3C)联盟进行开发的。严格来说应该是一种开放标准的矢量图形语言,可让你设计激动人心的、高分辨率的Web图形页面。用户可以直接用代码来描绘图像,可以用任何文字处理工具打开SVG图像,通过改变部分代码来使图像具有交互功能,并可以随时插入到HTML中通过浏览器来观看。不适合游戏应用。
第二章:搭建开发环境
2.1、安装ECharts
官网好像点击这个链接也进不去了
下载四种方式:直接下载,npm,github,CDN引入
直接下载:
我们可以在直接下载 echarts.min.js 并用 <script>标签引入。
https://cdn.staticfile.org/echarts/4.7.0/echarts.min.js
另外,开发环境下可以使用源代码版本 echarts.js 并用 <script> 标签引入,源码版本包含了常见的错误提示和警告。
https://cdn.staticfile.org/echarts/4.7.0/echarts.js
我们也可以在 ECharts 的官网上直接下载更多丰富的版本,包含了不同主题跟语言,
下载地址:https://echarts.apache.org/zh/download.html。(暂时无法访问)
这些构建好的 echarts 提供了下面这几种定制:
- 完全版:echarts/dist/echarts.js,体积最大,包含所有的图表和组件,所包含内容参见:echarts/echarts.all.js。
- 常用版:echarts/dist/echarts.common.js,体积适中,包含常见的图表和组件,所包含内容参见:echarts/echarts.common.js。
- 精简版:echarts/dist/echarts.simple.js,体积较小,仅包含最常用的图表和组件,所包含内容参见:echarts/echarts.simple.js。
CDN:
-
Staticfile CDN(国内) : https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js
-
jsDelivr:https://cdn.jsdelivr.net/npm/[email protected]/dist/echarts.min.js
-
cdnjs :https://cdnjs.cloudflare.com/ajax/libs/echarts/4.3.0/echarts.min.js
NPM 方法
由于 npm 安装速度慢,本教程使用了淘宝的镜像及其命令 cnpm,安装使用介绍参照:使用淘宝 NPM 镜像。
npm 版本需要大于 3.0,如果低于此版本需要升级它:
查看版本
npm -v
2.3.0
升级 npm
cnpm install npm -g
升级或安装 cnpm
npm install cnpm -g
最新稳定版
$ cnpm install echarts --save
实例:
var echarts = require('echarts');
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 绘制图表
myChart.setOption({
title: {
text: 'ECharts 入门示例'
},
tooltip: {
},
xAxis: {
data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
},
yAxis: {
},
series: [{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}]
});
2.2、简单使用ECharts
这里利用CDN引入测试,实际开发请下载
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个 ECharts 实例</title>
<!-- 引入 echarts.js -->
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
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>
运行效果:
第三章:组件详解
3.1、配置语法
第一步:创建 HTML 页面
创建一个 HTML 页面,引入 echarts.min.js:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<!-- 引入 ECharts 文件 -->
<script src="echarts.min.js"></script>
</head>
</html>
第二步: 为 ECharts 准备一个具备高宽的 DOM 容器
实例中 id 为 main 的 div 用于包含 ECharts 绘制的图表:
<body>
<!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
<div id="main" style="width: 600px;height:400px;"></div>
</body>
第三步: 设置配置信息
ECharts 库使用 json 格式来配置
echarts.init(document.getElementById('main')).setOption(option);
这里 option 表示使用 json 数据格式的配置来绘制图表。步骤如下:
标题
为图表配置标题:
title: {
text: '第一个 ECharts 实例'
}
提示信息
配置提示信息:
tooltip: {},
图例组件
图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。
legend: {
data: [{
name: '系列1',
// 强制设置图形为圆。
icon: 'circle',
// 设置文本为红色
textStyle: {
color: 'red'
}
}]
}
X 轴
配置要在 X 轴显示的项:
xAxis: {
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
}
Y 轴
配置要在 Y 轴显示的项。
yAxis: {}
系列列表
每个系列通过 type 决定自己的图表类型:
series: [{
name: '销量', // 系列名称
type: 'bar', // 系列图表类型
data: [5, 20, 36, 10, 10, 20] // 系列中的数据内容
}]
每个系列通过 type 决定自己的图表类型:
- type: ‘bar’:柱状/条形图
- type: ‘line’:折线/面积图
- type: ‘pie’:饼
- type: ‘scatter’:散点(气泡)图
- type: ‘effectScatter’:带有涟漪特效动画的散点(气泡)
- type: ‘radar’:雷达图
- type: ‘tree’:树型图
- type: ‘treemap’:树型图
- type: ‘sunburst’:旭日图
- type: ‘boxplot’:箱形图
- type: ‘candlestick’:K线图
- type: ‘heatmap’:热力图
- type: ‘map’:地图
- type: ‘parallel’:平行坐标系的系列
- type: ‘lines’:线图
- type: ‘graph’:关系图
- type: ‘sankey’:桑基图
- type: ‘funnel’:漏斗图
- type: ‘gauge’:仪表盘
- type: ‘pictorialBar’:象形柱图
- type: ‘themeRiver’:主题河流
- type: ‘custom’:自定义系列
实例
以下为完整的实例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个 ECharts 实例</title>
<!-- 引入 echarts.js -->
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
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>
大家可以改变类型试试,有些类型是不支持这种格式的,也是正常的
3.2、详细解析语法
3.2.1 标题
在ECharts中,标题一般包括主标题和副标题,标题的相关参数配置可以在option中的title内配置。下面例举一些常用的参数
- text:主标题文本,支持用\n换行
- subtext:副标题文本,支持用\n换行
- left:与容器左侧的距离,其取值可以是具体像素值,例如:10;也可以是相对于容器的百分比值,例如:10%;还可以是更常用的left、center、right,可以理解为左对齐、居中、右对齐。
- show:是否显示标题组件,取值为布尔数据型数据,默认为true
title{
text:"这是主标题",
subtext:"这是副标题",
left:"center" //居中显示
}
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ECharts图表</title>
<!-- 引入 echarts.js -->
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: '这是主标题',
subtext: '这是副标题',
left: 'center'
},
tooltip: {
},
// legend: {
// data: ['销量']
// },
xAxis: {
data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
},
yAxis: {
},
series: [{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
运行结果:
3.2.2 提示框
在ECharts中,提示框组件成为tooltip,它的作用是在合适的时机向用户提供相关信息。
-
trigger:触发类型,可选的参数有item(图形触发)、axis(坐标轴触发)、none(不触发)。
-
formatter:提示框浮层内容格式器,一般使用字符串模板,模板变量有{a},{b},{c},{d},{e},分别表示系列名、数据名、数据值等。其中变量{a},{b},{c},{d} 在不同图表类型下代表的数据含义如下所示
- 折线(区域)图、柱状(条形)图、K线图:{a}(系列名称),{b}(类型值),{c}(数值),{d}(无)
- 散点图(气泡)图:{a}(系列名称),{b}(数据名称),{c}(数值数组),{d}(无)
- 地图:{a}(系列名称),{b}(区域名称),{c}(合并数值),{d}(无)。
- 饼图、仪表盘、漏洞图:{a}(系列名称),{b}(数据项名称),{c}(数值),{d}(百分比)
-
axisPointer:坐标轴指示器配置项,type是该参数的子参数,作用为设置指示器类型,取值可选line(直线指示器),shadow(阴影指示器),cross(十字准星指示器),none(无指示器)
-
show:是否显示提示框组件,取值为布尔型数据,默认为true。
tooltip:{
trigger:'axis',
axisPointer:{
type:'shadow'
}
}
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ECharts图表</title>
<!-- 引入 echarts.js -->
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: '这是主标题',
subtext: '这是副标题',
left: 'center'
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
// legend: {
// data: ['销量']
// },
xAxis: {
data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
},
yAxis: {
},
series: [{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
3.2.3 工具栏
在ECharts中,工具栏组件称为toolbox,通过设置工具栏,我们可以将可视化下载到本地,或者查看可视化的底层数据等。
- show:是否显示工具栏组件,取值为布尔型数据,默认为:true。
- featrue:各工具配置项,其中包含很多常用的子参数,例如saveAsImage、restore、dataView、magicType等。其中,saveAsImage是将可视化结果保存在本地,restore是将可视化还原到初始的设置,dataView可以看到可视化的底层数据视图,magicType则可以将一种可视化转为另一种可视化。
toolbox: {
show: true,
feature: {
mark: {
show: true
},
dataView: {
show: true,
readOnly: false
},
magicType: {
show: true,
type: ['line', 'bar']
},
restore: {
show: true
},
saveAsImage: {
show: true
}
}
},
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ECharts图表</title>
<!-- 引入 echarts.js -->
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: '这是主标题',
subtext: '这是副标题',
left: 'center'
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
toolbox: {
show: true,
feature: {
mark: {
show: true
},
dataView: {
show: true,
readOnly: false
},
magicType: {
show: true,
type: ['line', 'bar']
},
restore: {
show: true
},
saveAsImage: {
show: true
}
}
},
// legend: {
// data: ['销量']
// },
xAxis: {
data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
},
yAxis: {
},
series: [{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
运行结果:
演示一:转为数据视图
演示二:转为折线图
下载是以图片形式下载,大家可以试试
3.2.4 图例
在ECharts中,图例组件称为legend,其作用是区分不同的数据展示。下面例举一些常用的参数
- show:是否显示图例组件,取值为布尔类型的数据,默认为true。
- left:与容器左侧的距离,其取值可以是具体像素值,例如:10;也可以是相对于容器的百分比值,例如:10%;还可以是更常用的left、center、right,可以理解为左对齐、居中、右对齐。
- top:与容器顶部的距离,其取值可以是具体的像素值,例如10;也可以是相对于容器的百分比值,例如10%;还可以是更常用的top、middle、bottom,可以理解为处于顶部、处于中部、处于底部
- orient:图例列表的布局朝向,默认是horizontal(水平的),也可以是vertical(竖直的)。
- data:图例中的数据数组,通常与数据展示的系列一一对应,具体使用方法可参见下面的例子
这里用不同颜色的柱子分别表示销量和进货量,为了能区分且和名称对应上,需要使用图例
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ECharts图表</title>
<!-- 引入 echarts.js -->
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: '这是主标题',
subtext: '这是副标题',
left: 'center'
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
legend: {
data: ['销量', '进货量'],
left: 'right',
},
xAxis: {
data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
},
yAxis: {
},
series: [{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}, {
name: '进货量',
type: 'bar',
data: [10, 50, 22, 15, 6, 15]
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
结合前面学习知识,折线图也可以(或者其他图)
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ECharts图表</title>
<!-- 引入 echarts.js -->
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: '这是主标题',
subtext: '这是副标题',
left: 'center'
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
toolbox: {
show: true,
feature: {
magicType: {
show: true,
type: ['line', 'bar']
},
},
top: '20'
},
legend: {
data: ['销量', '进货量'],
left: 'right',
},
xAxis: {
data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
},
yAxis: {
},
series: [{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}, {
name: '进货量',
type: 'bar',
data: [10, 50, 22, 15, 6, 15]
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
3.2.5 时间轴
在使用方法上,timeline和之前介绍的组件略有差距,使用时会存在多个option,可以将ECharts传统的option称为原子option,将使用timeline时用到的option称为包含多个原子option的复合option。使用timeline时的格式可以用下面的代码表示:
在如下代码中(图例后面)baseOption是一个“原子option”,options数组中每一项也是一个“原子option”。每个“原子option”中就是本文档描述的各种配置项
完整代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ECharts图表</title>
<!-- 引入 echarts.js -->
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var allOptions = {
baseOption: {
timeline: {
data: ['2020', '2021', '2022']
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
toolbox: {
show: true,
feature: {
magicType: {
show: true,
type: ['line', 'bar']
},
},
top: '20'
},
legend: {
data: ['销量', '进货量'],
left: 'right',
},
xAxis: [{
type: 'category',
data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
}],
yAxis: [{
type: 'value'
}],
series: [{
type: 'bar',
}]
},
options: [{
//这是'2020'对应的option
title: {
text: '2020年销售情况'
},
series: [{
data: [300, 500, 450, 500, 320, 623]
}]
}, {
//这是'2020'对应的option
title: {
text: '2021年销售情况'
},
series: [{
data: [380, 300, 150, 700, 220, 266]
}]
}, {
//这是'2020'对应的option
title: {
text: '2022年销售情况'
},
series: [{
data: [450, 400, 350, 500, 320, 423]
}]
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(allOptions);
</script>
</body>
</html>
比较常用的参数大多与播放设置相关,例如是否循环播放的loop参数,是否反向播放的rewind参数,播放速度playInterval参数,播放按钮的位置controlPosition参数等。
3.2.6 数据区域缩放
在ECharts中,数据区域缩放组件称为dataZoom,它的作用是向用户提供区域缩放的功能,使用户可以通过区域缩放概览数据的整体情况,也能关注数据的细节
目前ECharts支持的区域缩放组件有如下几种:
- 滑动条型数据区域缩放组件(dataZoomSlider)
- 内置型数据区域缩放组件(dataZoomInside)
- 框选型数据区域缩放组件(dataZoomSelect)
1.滑动条型数据区域缩放组件
滑动条型数据区域缩放组件比较常用的参数有以下几个。
1)xAxisIndex:指定控制的x轴。如果一个可视化中有多个图表,我们的区域缩放组件控制的是哪个轴呢?此时就需要指定这个参数的取值:如果取值是一个数字,则控制的是一个轴;如果取值是一个数组,那么控制的是多个轴。下面我们来看看示例代码;
option:{
xAxis:[{
{
...},//第一个xAxis
{
...},//第二个xAxis
{
...},//第三个xAxis
{
...} //第四个xAxis
}],
dataZoom:[
{
//第一个dataZoom组件
xAxisIndex:[0,3] //表示这个dataZoom组件控制第一个和第四个xAxis
},
{
xAxisIndex: 2 //表示这个dataZoom组件控制第三个xAxis
}
]
}
此时第一个dataZoom组件控制的是第一个和第四个xAxis,而第二个dataZoom组件控制的是第三个xAxis
除了xAxisIndex,也有yAxisIndex,用法类似,这里不再赘述
2)filterMode:过滤模式,dataZoom数据窗口缩放的实质是数据过滤,即过滤掉窗口外的内容
过滤模式有多种,常用的可选值如下所示
- fliter:过滤窗口外的数据。当可视化有多个轴时,会影响其他轴的数据范围,对于数据,只要有一个维度在窗口外,就会被过滤掉
- weakFilter:过滤窗口外的数据。当可视化有多个轴时,会影响其他轴的数据范围,对于数据,只有当其所有维度都在窗口同侧外,才会被过滤掉
- empty:不会影响其他轴的数据范围
- none:不过滤数据,只会改变数轴范围
我们来看一个具体的例子,这里只设置了option
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数据区域缩放</title>
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
dataZoom: [{
id: 'dataZoomX',
type: 'slider',
xAxisIndex: [0],
filterMode: 'filter'
}, {
id: 'dataZoomY',
type: 'slider',
yAxisIndex: [0],
filterMode: 'empty'
}],
xAxis: {
type: 'value'
},
yAxis: {
type: 'value'
},
series: {
type: 'bar',
data: [
//第一列对应x轴,第二列对应y轴
[10, 30],
[20, 50],
[5, 20],
[2, 10]
]
}
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
从代码中可以看到,控制x轴的缩放模式为filter,控制y轴的缩放模式为empty,则x轴作为主轴,x的缩放会影响y轴的数据,y轴作为辅助轴,y轴的缩放不会影响x轴的数据。可以随意拖动x轴或者y轴滑动条的两端,或是拖动滑动条,实现窗口数据缩放
2.内置型数据区域缩放组件
所谓内置,是指该区域缩放的组件是内置在坐标系中的,其参数和上面提到的滑动条型数据区域缩放组件的参数基本一致,将上面的代码中的slider类型改为inside类型,代码如下所示:
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数据区域缩放</title>
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
dataZoom: [{
id: 'dataZoomX',
type: 'inside',
xAxisIndex: [0],
filterMode: 'inside'
}, {
id: 'dataZoomY',
type: 'inside',
yAxisIndex: [0],
filterMode: 'empty'
}],
xAxis: {
type: 'value'
},
yAxis: {
type: 'value'
},
series: {
type: 'bar',
data: [
//第一列对应x轴,第二列对应y轴
[10, 30],
[20, 50],
[5, 20],
[2, 10]
]
}
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
将鼠标悬停在可视化区域,滚动鼠标滚轮,可以发现可视化数据窗口在变化,所谓内置,其实就是将缩放内置在图中,不显示地出现在我们的视野中
3.框选型数据区域缩放组件
框选型,顾名思义,是通过选框来进行数据区域缩放,该组件在之前提到的toolbox中。下面我们来看个实例
在之前讲解toolbox时的代码中的toolbox.feature下加入dataZoom:{show:true},为了看清楚toolbox,还要在toolbox下设置left:‘left’,得到以下的option代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数据区域缩放</title>
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: '这是主标题',
subtext: '这是副标题',
left: 'center', //居中显示
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
toolbox: {
show: true,
left: 'left',
feature: {
mark: {
show: true
},
dataView: {
show: true,
readOnly: false
},
magicType: {
show: true,
type: ['line', 'bar']
},
restore: {
show: true
},
saveAsImage: {
show: true
},
dataZoom: {
show: true
}
}
},
legend: {
data: ['各产品销售情况']
},
xAxis: {
data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
},
yAxis: {
},
series: [{
name: '销量',
type: 'bar',
data: [200, 600, 205, 530, 352, 215]
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
在左上角的toolbox工具箱中,多了两个按钮,分别是"区域缩放"和"区域缩放还原",点击"区域缩放按钮",在可视化图中划出一个区域,即可对数据进行缩放,点击"区域缩放还原",可以清除缩放并还原到最初的可视化状态
3.2.7 网格
可以通过grid在可视化坐标系中控制可视化展示时的网格大小,常用的参数除了之前提到的位置参数,如left、top、right、bottom等,还有width(grid组件的宽度)、height(组件的高度),两者默认的参数都是auto,即自适应,当然也可以指定具体数值。
例图:
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>网格</title>
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
//网格布局
grid: [{
x: '20%',
y: '20%',
width: '30%',
height: '30%'
}],
title: {
text: '这是主标题',
subtext: '这是副标题',
left: 'center', //居中显示
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
toolbox: {
show: true,
left: 'left',
feature: {
mark: {
show: true
},
dataView: {
show: true,
readOnly: false
},
magicType: {
show: true,
type: ['line', 'bar']
},
restore: {
show: true
},
saveAsImage: {
show: true
},
dataZoom: {
show: true
}
}
},
legend: {
data: ['各产品销售情况']
},
xAxis: {
data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
},
yAxis: {
},
series: [{
name: '销量',
type: 'bar',
data: [200, 600, 205, 530, 352, 215]
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
利用网格属性可以控制整个可视化视图的尺寸大小
3.2.8 坐标轴
一般来说,我们最常用的坐标轴是直角坐标系,尤其是二维的直角坐标系,所以横轴(xAxis)和纵轴(yAxis)最常被使用。关于xAxis和yAxis的常用参数如下所示:
- position:指定x轴的位置,可选参数有top(顶部)和bottom(底部)
- type:指定坐标轴的类型。可选参数有四种:“value”,表示数值类型的轴,适用于连续型数据;“category”,表示类别类型的轴,适用于离散的类别型数据;”time“,表示时间类型的轴,适用于连续的时间序列数据;“log”,表示对数据;类型的轴,适用于对数数据
- name:坐标轴的名称
- nameLocation:坐标轴的名称显示位置。可选参数有三种:“start”,开始位置;“middle"或者"center”,中间位置;“end”,结束位置;
修改之前的代码,对option中的xAxis和yAxis添加部分参数,加入坐标轴的名称分别为横轴的"产品名称"和纵轴的"产品销量",并将坐标轴名称都设置为居中显示(center)。加入文字显示时需偏移一定距离的原因是避免坐标轴名称文字与x轴、y轴的刻度上的文字重叠。具体代如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>网格</title>
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: '这是主标题',
subtext: '这是副标题',
left: 'center', //居中显示
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
toolbox: {
show: true,
left: 'left',
feature: {
mark: {
show: true
},
dataView: {
show: true,
readOnly: false
},
magicType: {
show: true,
type: ['line', 'bar']
},
restore: {
show: true
},
saveAsImage: {
show: true
},
dataZoom: {
show: true
}
}
},
legend: {
data: ['各产品销售情况']
},
xAxis: {
data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"],
name: '产品名称',
nameLocation: 'center',
nameGap: 35
},
yAxis: {
name: '产品销量',
nameLocation: 'center',
nameGap: 40
},
series: [{
name: '销量',
type: 'bar',
data: [200, 600, 205, 530, 352, 215]
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
3.2.9 数据系列
一个图表可能包含多个系列,每一个系列可能包含多个数据,所以数据系列(series)主要作为数据的容器
对于每种可视化图标,series的形式并不完全相同。下面看一个饼图(pie)的series结构。
series是一个数组结构,使用中括号,中括号内的每个部分用大括号包含,每个大括号类似一个字典结构,包含键(key)和值(value)
例如代码中的name为键,"访问来源"为值;type指定了图为pie(饼图);radius指定了饼图的半径大小,以图在图框中的占比表示大小;data中包含了饼图中每块饼的数据内容。除此之外,还有一些样式相关的设置,代码如下所示:
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>网格</title>
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: '饼图展示',
left: 'center'
},
series: [{
name: '访问来源',
type: 'pie',
radius: '55%',
center: ['50%', '50%'],
data: [{
value: 355,
name: '直接访问'
}, {
value: 310,
name: '邮件营销'
}, {
value: 274,
name: '联盟广告'
}, {
value: 235,
name: '视频广告'
}, {
value: 400,
name: '搜索引擎'
}, ].sort(function(a, b) {
return a.value - b.value;
}),
roseType: 'radius',
label: {
color: 'rgba(0,0,0,0.5)' //显示字体颜色
},
labelLine: {
lineStyle: {
color: 'rgba(0,0,0,0.6)' //连接字体线颜色
},
smooth: 0.2,
length: 10,
length2: 20
},
itemStyle: {
//饼图颜色
// color: '#c23531',
shadowBlur: 200,
shadowColor: 'rgba(0,0,0,0.5)'
},
anumationType: 'scale',
animationEasing: 'elasticOut',
animationDelay: function(idx) {
return Math.random() * 200;
}
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
3.2.10 全局字体样式
在制作可视化时,常常会用到文字展示,此时选择一种合适的字体的样式与可视化搭配显得尤为重要。
在全局字体样式(textStyle)中,我们可以定义全局的字体样式显示,常用的参数及其说明如下所示。
- color:文字的颜色,例如textStyle=“#fff”。
- fontStyle:文字字体的风格,可选值有normal、italic、oblique。
- fontWeigh:文字的字体系列,可选值有sans-serif、serif、monospace、Arial、Courier New、Microsoft Yahei等。
- fontSize:文字的字体大小,取值为数值
比如以下代码,加入styleStyle,设置字体的颜色为蓝色(blue),字体加粗显示(bolder)、字体样式为微软雅黑(Microsoft Yahei),可视化结果如图:
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ECharts图表</title>
<!-- 引入 echarts.js -->
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: '这是主标题',
subtext: '这是副标题',
left: 'center'
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
legend: {
data: ['各产品销量情况']
},
xAxis: {
data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
},
yAxis: {
},
series: [{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}],
textStyle: {
color: 'blue',
fontWeight: 'bolder',
fontFamily: 'Microsoft Yahei'
}
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
小结
学到这里ECharts基本入门了,会一些简单的使用了,接下来将讲解更高级的使用方法,更炫酷的数据展示,例如下面这样的
炫酷用法,请期待第二期文章