调用showEchartsAndLabel方法时传入mychart、option参数即可,另外请根据自己的情况修改label
/**
*
* @param myChart
* @param option
*/
function showEchartsAndLabel(myChart,option){
var selected = {};
var isShow;
for(var i = 0; i< option.series.length; i++){
//初始化选择值
selected[option.series[i].name] = true;
isShow= false;
//只显示最后一个label
if(i == option.series.length -1){
isShow= true;
}
option.series[i].label.normal.show = isShow;
// {
// normal: {
// show: isShow,
// position: 'top',
// textStyle:{
// fontSize: //'12px',
// //color:'#a1c9fa'
// }
// }
// };
}
var fun = function(obj){
var total = 0;
for(var key in selected){
if(selected[key]){
for(var i=0; i<option.series.length; i++){
//只添加没有隐藏的列的数值
if(key == option.series[i].name){
total += option.series[i].data[obj.dataIndex];
}
}
}
}
return total;
}
//最后一个label的formatter 绑定一个写好的函数
option.series[option.series.length - 1].label.normal.formatter = fun;
//设置option
myChart.setOption(option);
//绑定legend选择改变事件
myChart.on("legendselectchanged", function (obj) {
selected = obj.selected;
var flag = true;
for(var i=option.series.length - 1; i >= 0; i--){
//只展示最后一个没有隐藏的列的label
if(flag && selected[option.series[i].name]){
flag = false;
option.series[i].label.normal.show = true;
option.series[i].label.normal.formatter = fun;
}else{
option.series[i].label.normal.show = false;
option.series[i].label.normal.formatter = function(obj){
return "";
}
}
}
//重新设置option
myChart.setOption(option);
});
}
注: 上面的方法已经解决了legend改变时,数量对应不上的问题