echarts是百度开源的前端统计报表框架,可以绘制各种曲线,饼图,直方图等等。在一般的统计报表项目中应用非常广泛,它是一个javascript框架,目前已经献给apache基金会了,所以也叫apache echarts。
获取echarts库的办法很简单,可以直接在官网https://echartsjs.com/zh/download.html下载echarts源文件或者压缩文件,也可以通过npm install echarts安装到本地,我的示例中就是通过npm install echarts的方式安装的。
echarts的使用很直观,也很容易懂,我们先来看一个简单的示例,折线图,通常,我们通过一个折线图来表现比如一天中的温度走势,篮球比赛中两队的比分走势等等。因为数据是离散的,但是他们之间也不会突然差别很大,所以可以通过折线来表示更直观,比如我们可以通过折线图来表示一款手机在2018年各个季度的销售情况,如下所示:
实现这个折线图的代码如下:
<!doctype html>
<html>
<head>
<meta charset="UTF-8"/>
<title>echarts-demo</title>
<script type="text/javascript" src="node_modules/echarts/dist/echarts.min.js"></script>
<style type="text/css">
html,body{
margin:0;
padding:0;
}
#container{
width: 1000px;
margin:0 auto;
background: #fafafc;
height:400px;
}
</style>
</head>
<body>
<div id="container"></div>
<script type="text/javascript">
var myChart = echarts.init(document.getElementById("container"));
var option = {
title:{
text:"销售额"
},
tooltip:{},
legend:{
data:["销量"]
},
xAxis:{
data:["1","2","3","4"]
},
yAxis:{},
series:[{
name:'mobile季度销量',
type:'line',
data:[190,220,230,250]
}]
};
myChart.setOption(option);
</script>
</body>
</html>
整个代码很简单,主要思路是先引入所需的echart.min.js,然后在html body中增加一个id="container"的div,并且给出这个div元素的宽度和高度,我们在绘图的时候,只需要调用一次初始化方法和一次设置配置项的方法即可。chart = echarts.init(div),chart.setOption(opts);
至于这个opts,是一个js对象,包含了报表所需的基本元素,一般至少会有series,title,legend等这些属性。如果是折线图或者直方图,一般还有表示系统坐标的X轴和Y轴:xAxis与yAxis 。
折线图的数据只有一组,看着很单调,其实他的数据series本来就是一个数组,可以传入多个数据对象,这样,我们看到的是多条线,可能他们会有交叉,如下图所示:
而实现这个图形,我们只需要在series属性中增加一组数据即可:
series:[{
name:'mobile季度销量',
type:'line',
data:[190,220,230,250]
},{
name:'pc季度销量',
type:'line',
data:[200,198,240,245]
}]
echarts还可以实现饼图,如下所示,饼图的代码:
<!DOCTYPE html>
<html dir="ltr">
<head>
<meta charset="utf-8">
<script type="text/javascript" src="node_modules/echarts/dist/echarts.min.js">
</script>
<title>piecharts</title>
<style media="screen">
html,body{margin:0;padding:0;}
#container{width:800px;height:400px;margin:0 auto;}
</style>
</head>
<body>
<div class="" id="container">
</div>
<script type="text/javascript">
var chart = echarts.init(document.getElementById("container"));
var option = {
title:{
text:"饼图",
left:"center",
top:20,
textStyle:{
color:"#ccc"
}
},
tooltip:{
trigger:'item',
formatter:'{a} <br/>{b}:{c} ({d}%)'
},
series:{
name:"访问来源",
type:"pie",
radius:'50%',
center:['50%','50%'],
data:[
{value:335,name:"直接访问"},
{value:310,name:"邮件营销"},
{value:274,name:"联盟广告"},
{value:235,name:"视频广告"},
{value:400,name:"搜索引擎"}
].sort((a,b)=>a.value-b.value)
}
};
chart.setOption(option);
</script>
</body>
</html>
展示效果如下所示:
我们可以通过tooltip属性来设置提示信息,提示信息默认有一个格式化属性formatter,如果我们什么都不填写,就是"{a}<br/>{b}:{c}",我们可以自定义,但是一般来说都逃不过{a},{b},{c}这些占位符代表的数据,一般而言,{a}代表series中的name属性值,而{c}代表series中的data对应的具体值,{b}根据不同的图形代表的值不一样,饼图中{b}代表series中data中的name,在有坐标的图中,表示横坐标的下标值xAxis->data[i]。如下所示:什么都不填写的情况下,饼图的tooltip:
我们可以自定义这个tooltip的属性formatter:"{a}<br/>{b}:{c} ({d}%)" ,替换之后展示效果如下:
与默认的tooltip有一些差别,但是基本上的提示信息都表示出来了。