主要思路
具体实现
准备原始数据、准备过滤原始数据的函数 arrFilter():
datasetSource = [
['product', '2015', '2016', '2017', '2018'],
['Matcha Latte', 43.3, 85.8, 93.7, 54.2],
['Milk Tea', 83.1, 73.4, 55.1, 65.3],
['Cheese Cocoa', 86.4, 65.2, 82.5, 87.1],
['Walnut Brownie', 72.4, 53.9, 39.1, 33.6]
];
function arrFilter(source, hasColumnName, filterCondition) {
var iBegin = hasColumnName ? 1 : 0;
var res = hasColumnName ? [source[0]] : [];
if (typeof(filterCondition) === 'function') {
for (let i = iBegin; i < source.length; i++) {
if (filterCondition(source[i])) {
res.push(source[i]);
}
}
} else if (typeof(filterCondition) === 'string') {
for (let i = iBegin; i < source.length; i++) {
let item = source[i];
if (eval(filterCondition)) {
res.push(source[i]);
}
}
}
return res;
}
配置项(自定义图例及对应的 series[i])
option = {
legend: [{
selectedMode: 'multipe',
data: (function() {
let res = [].concat(datasetSource[0]);
res.shift();
return res;
})(),
}, {
y: 20,
data: ['Matcha Latte/Milk Tea', 'Cheese Cocoa/Walnut Brownie']
}],
tooltip: {},
// 使用 dataset 传入数据
dataset: {
source: datasetSource
},
xAxis: {
type: 'category'
},
yAxis: {},
// Declare several bar series, each will be mapped
// to a column of dataset.source by default.
series: (function() {
let res = [];
for (let i = 1; i < datasetSource[0].length; i++)) {
res.push({
type: 'bar'
});
}
res = res.concat([{
type: 'line',
name: 'Matcha Latte/Milk Tea',
data: []
},
{
type: 'line',
name: 'Cheese Cocoa/Walnut Brownie',
data: []
}
]);
return res;
})()
};
监听「legendselectchanged」事件
myChart.on('legendselectchanged', function(params) {
var datasetSourceNew;
//alert(JSON.stringify(params.selected));
if (params.selected['Cheese Cocoa/Walnut Brownie'] === true && params.selected['Matcha Latte/Milk Tea'] === true) {
datasetSourceNew = [].concat(datasetSource);
} else if (params.selected['Matcha Latte/Milk Tea'] === false && params.selected['Cheese Cocoa/Walnut Brownie'] === false) {
datasetSourceNew = [].concat([datasetSource[0]]);
} else if (params.selected['Matcha Latte/Milk Tea'] === true && params.selected['Cheese Cocoa/Walnut Brownie'] === false) {
datasetSourceNew = arrFilter(datasetSource, true, 'item[0] === "Matcha Latte" || item[0] === "Milk Tea"');
} else if (params.selected['Cheese Cocoa/Walnut Brownie'] === true && params.selected['Matcha Latte/Milk Tea'] === false) {
datasetSourceNew = arrFilter(datasetSource, true, 'item[0] === "Cheese Cocoa" || item[0] === "Walnut Brownie"');
}
myChart.setOption({
dataset: {
source: datasetSourceNew
}
});
});
本文分享自 ZXand618的ECharts之旅 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!