<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ECharts1</title>
<!-- 引入 echarts.js -->
<script src="https://cdn.bootcss.com/echarts/3.5.4/echarts.min.js"></script>
</head>
<body>
<!-- 爲ECharts準備一個具備大小(寬高)的Dom -->
<div id="main" style="width: 1600px;height:800px;"></div>
<script type="text/javascript">
// 基於準備好的dom,初始化echarts實例
var myChart = echarts.init(document.getElementById('main'));
//定義圖表option
var option = {
tooltip : {
axisPointer : {
type : 'shadow'
}
},
title: {
text:'xxx激活設備數',
left:'left' ,
top:'10px',
textStyle: {
color: '#666',
fontWeight: 'normal'
}
},
toolbox: {
feature: {
dataView: {show: true, readOnly: false},
magicType: {show: true, type: ['line', 'bar']},
restore: {show: true},
saveAsImage: {show: true}
}
},
grid: {
y: '10%',
y2: '10%'
},
legend: {
data:['安卓','諾基亞','蘋果']
},
xAxis:{
type: 'category',
axisLabel:{
interval: 0, // {number}
rotate: 40
},
data: ['星期三','星期四']
},
yAxis:{
type: 'value',
min: 0,
interval: 10000
},
series: [
{
name:'安卓',
type:'bar',
stack:'xxx',
itemStyle: {
normal: {
color: '#548dd5'
}
},
data: [["星期三",10000],["星期四",20000]]
},
{
name:'諾基亞',
type:'bar',
stack:'xxx',
itemStyle: {
normal: {
color: '#000'
}
},
data: [["星期三",11000],["星期四",21000]]
},
{
name:'蘋果',
type:'bar',
stack:'xxx',
itemStyle: {
normal: {
color: '#e56c0a'
}
},
data: [["星期三",12000],["星期四",18000]]
},
{
name:'合計',
type:'bar',
stack:'xxx',
label: {
normal: {
show: true,
position: 'top',
textStyle: {
color: '#000'
},
formatter:''
}
},
data: [["星期三",0],["星期四",0]] //思路一:給series集合末尾多加一欄用於展示合計,但是值都是0;缺點:必須根據xAxis的data生成一組爲空的數據,且tooltip不能加trigger: 'axis',這個條件,不然會展示合計:0
}
]
};
var series = option["series"];
var fun = function (params) {
var data3 =0;
for(var i=0,l=series.length;i<l;i++){
data3 += series[i].data[params.dataIndex][1]
}
return data3
}
//加載頁面時候替換最後一個series的formatter
series[series.length-1]["label"]["normal"]["formatter"] = fun
// 使用剛指定的配置項和數據顯示圖表。
myChart.setOption(option);
//legend點擊事件,根據傳過來的obj.selected得到狀態是true的legend對應的series的下標,再去計算總和
myChart.on("legendselectchanged", function(obj) {
var b = obj.selected
, d = [];
//alert(JSON.stringify(b))
for(var key in b){
if(b[key]){
//alert(key)
for(var i=0,l=series.length;i<l;i++){
var changename = series[i]["name"];
if(changename == key){
d.push(i);//得到狀態是true的legend對應的series的下標
}
}
}
}
var fun1 = function (params) {
var data3 =0;
for(var i=0,l=d.length;i<l;i++){
for(var j=0,h=series.length;j<h;j++){
if(d[i] == j){
data3 += series[j].data[params.dataIndex][1] //重新計算總和
}
}
}
return data3
}
series[series.length-1]["label"]["normal"]["formatter"] = fun1
myChart.setOption(option);
})
</script>
</body>
</html>
網上搜的例子。
下圖