E-Chart首先放一个E-Chart的官方文档,对于E-Chart的所有使用详情、方法这里都有E-Chart官方文档:https://www.echartsjs.com/zh/tutorial.htmlE-
E-Chart下载地址:
GitHub下载地址:https://github.com/apache/incubator-echarts/releases
网盘下载地址:https://pan.baidu.com/s/1ShSe8C155EIjXNtSlSxsQA
教程相关代码(网盘):https://pan.baidu.com/s/1a7x3Ufa_SnoLpH2St6yP_g
简单使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>E-Chart教程</title>
<!-- 引入echart的js文件 -->
<script src="js/echarts.min.js"></script>
</head>
<body>
<!-- 添加一个显示图表的容器,并设置容器宽高(必须设置宽高,否则图表将无法显示出来) -->
<div id="chart" style="width: 400px;height: 400px;"> </div>
<script>
//通过echarts封装好的代码实例化E-Chart的实例(一个图表对象)
var chart = echarts.init(document.getElementById('chart'));
//定义一个配置对象用于配置图表
var option = {
// 设置图表标题
title: {
text: 'E-Charts教程'
},
// 设置图表图例
legend: {
data:['销量']
},
// 设置X轴的值(坐标点描述,必须设置,否则无法显示图表)
xAxis: {
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
},
// 设置Y轴的值(必须设置,哪怕大括号中没有内容,否则无法显示图表)
yAxis: {},
//设置图表数据
series: [
{
// 设置当前这组数据的数据描述
name: '销量',
// 设置当前这组数据需要显示的形式(bar:条形图;pie:饼图;line:折线图)
type: 'bar',
// 当前这组数据每个数据点的值
data: [5, 20, 36, 10, 10, 20]
}
]
};
// 将图表的配置变量赋值给图表,完成图表的设置(千万不能忘了,否则图表不会显示)
chart.setOption(option);
</script>
</body>
</html>
样式设置
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>E-Chart教程</title>
<!-- 引入echart的js文件 -->
<script src="js/echarts.min.js"></script>
</head>
<body>
<!-- 添加一个显示图表的容器,并设置容器宽高(必须设置宽高,否则图表将无法显示出来) -->
<div id="chart" style="width: 400px;height: 400px;">
<script>
//通过echarts封装好的代码实例化E-Chart的实例(一个图表对象)
var chart = echarts.init(document.getElementById('chart'));
//定义一个数据对象用于配置图表
var option = {
// 设置图表标题
title: {
//标题文本(支持 “\n” 换行)
text: 'E-Charts教程',
//是否显示标题
show:true,
// 标题字体样式
textStyle:{
// 文字颜色
color:'#f00',
// 文字大小
fontSize:16
}
},
tooltip:{
// 是否显示数据提示
show:true,
// 数据提示的形式
trigger:'item',//item、axis、none
// 数据点数据提示触发条件
triggerOn:'click',//mousemove:移动时触发;click:点击时;none:不触发
},
toolbox:{
show:true,
orient:'horizontal'
},
// 设置图表图例
legend: {
//是否显示图例
show:true,
// 图例项(与series中的name对应)
data:['销量'],
// 设置图例水平对齐方式
left:'center',
// 设置图例垂直对齐方式
top:'bottom',//middle:垂直居中
// 设置图例显示伸展方向
orient:'horizontal',//vertical:垂直方向
// 图例文字样式
fontStyle:{
// 图例文字颜色
color:'#f00',
//图例文字大小
fontSize:16
}
},
// 设置X轴的值(坐标点描述,必须设置,否则无法显示图表)
xAxis: {
// x轴数据
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"],
//设置x轴位置
position:'bottom',
// 设置x轴偏移量
offset:10,
// x轴名称(显示在x轴末尾)
name:'x轴',
// x轴名称样式
nameTextStyle:{
// x轴名称文字颜色
color:'#f00'
}
},
// 设置Y轴的值(必须设置,哪怕大括号中没有内容,否则无法显示图表)
yAxis: {
// 设置y轴显示的位置
position:'left',
// 设置y轴文字显示的偏移量
offset:10,
// 设置y轴的描述
name:'y轴',
// 设置y轴名称位置
nameLocation:'end',//middle、center:居中,start:Y轴开始的位置,end:Y轴结束的位置
// Y轴最小值
min:0,
// Y轴最大值
max:100
},
// 颜色盘(全局颜色集合),如果没有设置颜色,系统将自动按顺序从颜色盘中设置颜色
color:['#ff0000','#888800','#00ff00','#008888','#0000ff'],
//设置图表数据
series: [
// 设置多组数据
{
// 设置当前这组数据的数据描述
name: '销量1',
// 设置当前这组数据需要显示的形式(bar:条形图;pie:饼图;line:折线图;radar:雷达图;tree:树图;)
type: 'bar',
// 当前这组数据每个数据点的值
data: [5, 20, 36, 10, 10, 20]
},
{
// 设置当前这组数据的数据描述
name: '销量2',
// 设置当前这组数据需要显示的形式(bar:条形图;pie:饼图;line:折线图;radar:雷达图;tree:树图;)
type: 'bar',
// 当前这组数据每个数据点的值
data: [5, 20, 36, 10, 10, 20]
}
]
};
// 将图表的配置变量赋值给图表,完成图表的设置(千万不能忘了,否则图表不会显示)
chart.setOption(option);
</script>
</div>
</body>
</html>
当然,在强大的E-Chart中,这只是一小部分的属性,如果有需要,可以去上面的E-Chart官方文档中查找自己需要的属性,这里就不详细介绍了。
E-Chart进阶使用之动态数据
在上面的案例中,我们图表的数据都是通过Option设置好series之后就没有改变过,也就是静态的数据,但在实际应用中,经常需要图表动态显示我们的数据,下面让我们来看一下如何动态更新、显示我们的数据。
在图表的配置中,我们设置数据是通过series去设置的,设置好后通过图表的setOption();方法将写好的图表设置设置到图表对象上,那么在设置了一次数据之后我们应该怎么再次设置图表数据呢?相信你已经想到了再写个option,再调用一遍setOption();方法,Ok,没问题,我们复制粘贴,又写了一遍option,又调用了图表对象的setOption();方法,但回过头,看了一下代码,为了更新个数据,又多了几十行代码,这无疑增加了代码赘余,不利于后期的代码维护,那么这又怎么办呢?其实,这个问题E-Char官方早就想到了,也早就有了解决方法,那就是我们每次在设置图表的配置时,也就是调用setOption方法时,都会将调用时传入的图表配置与上一次的图表配置进行对比,对比后只会更改有发生变化的部分,也就是说我们如果只是向更改图表的数据,Ok,我只需要重写option中的series部分的内容,然后调用setOption方法去更改我们数据部分的配置信息,下面然我们通过一个实例来展示一下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<style>
*{margin: 0;padding: 0;}
.content{width: 400px;margin:auto;}
input{padding: 10px;width: 100%;background-color: #ccc;}
</style>
<!-- 引入echart的js文件 -->
<script src="js/echarts.min.js"></script>
</head>
<body>
<div class="content">
<!-- 添加一个显示图表的容器,并设置容器宽高(必须设置宽高,否则图表将无法显示出来) -->
<div id="chart" style="width: 400px;height: 400px;">
<script>
……
</script>
</div>
<!-- 动态刷新数据按钮 -->
<input type="button" onclick="javascript:updateData()" value="刷新数据">
</div>
<script>
// 更新图表数据的方法
function updateData(){
var cData_1 = new Array();
var cData_2 = new Array();
//更改数据数组中的数据
for(var i=0;i<6;i++){
cData_1.push(Math.random() * 100);//生成0-100的随机数,并追加到cData_1集合中
cData_2.push(Math.random() * 100);//生成0-100的随机数,并追加到cData_2集合中
}
//更改数据的图表配置变量
var option = {
series:[
{
// 设置当前这组数据的数据描述
name: '销量1',
// 当前这组数据每个数据点的值
data: cData_1 //cData_1作为第一组数据值
},
{
// 设置当前这组数据的数据描述
name: '销量2',
// 当前这组数据每个数据点的值
data: cData_2 //cData_2作为第二组数据值
}
]
}
//调用setOption重新设置图表的数据
chart.setOption(option);
}
</script>
</body>
</html>
最后实现的效果如上图,我们点击刷新数据按钮,便可以看到图表中的数据柱发生了变化,到这里刷新图表数据就结束了,下面我们再来看一下动态添加数据。
E-Chart之动态添加数据
上面我们实现了动态更改图标的所有数据,但有时候我们需要的是动态添加、更新数据,确保数据的实时性,这时候怎么办呢?首先,我们从series标签中可以知道,图表的数据是通过数组的形式添加的,那么我们可不可以在这个数组上做些改变呢?OK,让我们来实践一下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<style>
*{margin: 0;padding: 0;}
.content{width: 400px;margin:auto;}
input{padding: 10px;width: 100%;background-color: #ccc;}
</style>
<!-- 引入echart的js文件 -->
<script src="js/echarts.min.js"></script>
<script>
// 图表数据值数组
var xData=[89,12,43,43,12,53];
// 图表X轴标题数据
var xTitle=[1,2,3,4,5,6];
// 动态变化的X轴标签(单个值)
var xLable = 1;
//通过echarts封装好的代码实例化E-Chart的实例(一个图表对象)
var chart;
// 页面加载完成后调用的方法(通过body标签中的onload(Load())实现调用)
function Load(){
chart = echarts.init(document.getElementById('chart'));
//定义一个数据对象用于配置图表
var option = {
// 设置图表标题
title: {
//标题文本(支持 “\n” 换行)
text: 'E-Charts教程'
},
// 设置图表图例
legend: {
show:true,
data:['销量']
},
// 设置X轴的值(坐标点描述,必须设置,否则无法显示图表)
xAxis: {
data: xTitle,
//设置x轴位置
position:'bottom'
},
// 设置Y轴的值(必须设置,哪怕大括号中没有内容,否则无法显示图表)
yAxis: {
position:'left',
},
//设置图表数据
series: [
{
// 设置当前这组数据的数据描述
name: '销量',
// 设置当前这组数据需要显示的形式(bar:条形图;pie:饼图;line:折线图;radar:雷达图;tree:树图;)
type: 'bar',
// 当前这组数据每个数据点的值
data: xData
}
]
};
// 将图表的配置变量赋值给图表,完成图表的设置(千万不能忘了,否则图表不会显示)
chart.setOption(option);
}
// 动态向‘图表’中添加数据的方法
function pushData(data){
// push(); 该方法是向数组、集合的末尾添加一条数据记录
xData.push(data);//追加一条数据到数据集合中
xTitle.push(xLable);//追加一个标签值到x轴标签数组中
xLable ++;
// shift(); 该方法是移除数组、集合的第一条数据记录
xData.shift();//移除第一条数据
xTitle.shift();//移除第一个x轴标签
// 重新设置图表数据
var option = {
xAxis:{
data:xTitle
},
series:[
{
name:"销量",
data:xData
}
]
}
chart.setOption(option);
}
</script>
</head>
<body onload="Load()">
<div class="content">
<!-- 添加一个显示图表的容器,并设置容器宽高(必须设置宽高,否则图表将无法显示出来) -->
<div id="chart" style="width: 400px;height: 400px;"></div>
<!-- 动态刷新数据按钮 -->
<input type="button" onclick="javascript:pushData(Math.random() * 100)" value="刷新数据">
</div>
</body>
</html>
在代码中,我们通过push方法和shift方法,实现数组在有原始数据的基础上的动态添加、移除,也就是说当没有原始数据时会出现push一条数据,又立马删掉一条数据,导致没有数据显示出来,解决办法也很简单,在图表中我们可以判断数组的长度是否到达自己限定的最大长度,通过这个判断数组长度是否到达最大长度去控制是否需要调用shift方法移除数组中第一条数据记录,这样就解决了上述问题:
// 图表数据值数组
var xData=[];
// 图表X轴标题数据
var xTitle=[];
// 动态变化的X轴标签(单个值)
var xLable = 1;
var xMax = 6;//最多显示六条数据
//通过echarts封装好的代码实例化E-Chart的实例(一个图表对象)
var chart;
// 动态向‘图表’中添加数据的方法
function pushData(data){
// push(); 该方法是向数组、集合的末尾添加一条数据记录
xData.push(data);//追加一条数据到数据集合中
xTitle.push(xLable);//追加一个标签值到x轴标签数组中
xLable ++;
// 判断数据条数是否到达规定的最大条数,如果到达最大条数,开始动态移除第一条数据,否则不移除
if(xTitle.length > xMax){
// shift(); 该方法是移除数组、集合的第一条数据记录
xData.shift();//移除第一条数据
xTitle.shift();//移除第一个x轴标签
}
// 重新设置图表数据
var option = {
xAxis:{
data:xTitle
},
series:[
{
name:"销量",
data:xData
}
]
}
chart.setOption(option);
}
到这里,大家可能有些疑惑,看了这么久,一直在讲条形图,其他图像的话又要怎么用呢?其实,这些图表的用法大抵差不多,只要你懂得怎么使用条形图了,其他图形也就没什么大问题了,只是有些图表注意下它们的一些不同点就行了。
饼图:它区别与条形图的不同点在于饼图只能有一组数据,另外饼图没有x、y轴(无需xAxis和yAxis标签),然后其他地方基本一样;
折线图:除了一些折线样式有些区别之外,其余的基本与条形图一致;
雷达图:与条形图差距较大,有专属的样式配置,数据组配置方式不同;
饼图
var chart = echarts.init(document.getElementById('chart'));
//定义一个数据对象用于配置图表
var option = {
// 设置图表标题
title: {
//标题文本(支持 “\n” 换行)
text: 'E-Charts教程'
},
// 设置图表图例
legend: {
show:true,
data:['销量']
},
//设置图表数据
series: [
{
// 设置当前这组数据的数据描述
name: '销量',
// 设置当前这组数据需要显示的形式(bar:条形图;pie:饼图;line:折线图;radar:雷达图;tree:树图;)
type: 'pie',
// 当前这组数据每个数据点的值
data: [
{value:89,name:'第一条'},
{value:43,name:'第二条'},
{value:12,name:'第三条'},
{value:54,name:'第四条'},
{value:74,name:'第五条'},
]
}
]
};
// 将图表的配置变量赋值给图表,完成图表的设置(千万不能忘了,否则图表不会显示)
chart.setOption(option);
折线图
<script>
// 页面加载完成后调用的方法(通过body标签中的onload(Load())实现调用)
function Load(){
var chart = echarts.init(document.getElementById('chart'));
//定义一个数据对象用于配置图表
var option = {
// 设置图表标题
title: {
//标题文本(支持 “\n” 换行)
text: 'E-Charts教程'
},
// 设置图表图例
legend: {
data:['销量']
},
xAxis:{
data:['第一条','第二条','第三条','第四条','第五条']
},
yAxis:{
},
//设置图表数据
series: [
{
// 设置当前这组数据的数据描述
name: '销量',
// 设置当前这组数据需要显示的形式(bar:条形图;pie:饼图;line:折线图;radar:雷达图;tree:树图;)
type: 'line',
// 当前这组数据每个数据点的值
data: [89,67,54,87,44]
}
]
};
// 将图表的配置变量赋值给图表,完成图表的设置(千万不能忘了,否则图表不会显示)
chart.setOption(option);
}
</script>
雷达图
<script>
// 页面加载完成后调用的方法(通过body标签中的onload(Load())实现调用)
function Load(){
var chart = echarts.init(document.getElementById('chart'));
//定义一个数据对象用于配置图表
var option = {
// 设置图表标题
title: {
//标题文本(支持 “\n” 换行)
text: 'E-Charts教程'
},
// 设置图表图例
legend: {
data:['第一组','第二组']
},
// 雷达图专属样式(仅雷达图可用,且雷达图必须设置)
radar: {
// shape: 'circle',
name: {
textStyle: {
color: '#fff',
backgroundColor: '#999',
borderRadius: 3,
padding: [3, 5]
}
},
// 指示器,配置雷达图维度(顶角)
indicator: [
{ name: 'one',max:100},
{ name: 'two',max:100},
{ name: 'three',max:100},
{ name: 'four',max:100},
{ name: 'fiver',max:100},
]
},
//设置图表数据
series: [
{
// 设置当前这组数据的数据描述
name: '销量',
// 设置当前这组数据需要显示的形式(bar:条形图;pie:饼图;line:折线图;radar:雷达图;tree:树图;)
type: 'radar',
// 当前这组数据每个数据点的值
data: [
{
value:[89,67,54,87,44],
name:'第一组'
},
{
value:[65,21,54,6,23],
name:'第二组'
}
]
}
]
};
// 将图表的配置变量赋值给图表,完成图表的设置(千万不能忘了,否则图表不会显示)
chart.setOption(option);
}
</script>
以上就是关于E-Chart的一些基本使用,具体的使用可以翻阅官方文档。