这是我举例解释这个问题的图表。
$(function () {
$('#container').highcharts({
chart: {
type: 'column'
},
title: {
text: 'Total fruit consumtion, grouped by gender'
},
xAxis: {
categories: ['Apples', 'Oranges', 'Pears', 'Grapes', 'Bananas']
},
yAxis: {
allowDecimals: false,
min: 0,
title: {
text: 'Number of fruits'
}
},
tooltip: {
formatter: function() {
return '<b>'+ this.x +'</b><br/>'+
this.series.name +': '+ this.y +'<br/>'+
'Total: '+ this.point.stackTotal;
}
},
plotOptions: {
column: {
stacking: 'normal'
}
},
series: [{
name: 'John',
data: [5, 3, 4, 7, 2],
stack: 'male'
}, {
name: 'Joe',
data: [3, 4, 4, 2, 5],
stack: 'male'
}, {
name: 'Jane',
data: [2, 5, 6, 2, 1],
stack: 'female'
}, {
name: 'Janet',
data: [3, 0, 4, 4, 3],
stack: 'female'
}]
});
});
我们在图例中有系列名称。图表与分组列堆叠在一起。 我们将它们分为男性和女性类别。
有没有办法让男性和女性成为传说?这样我们一次只能看到男性食物消费量或女性食物消费量。
你可以在这里引用小提琴 - jsfiddle.net/bLZHd /
由于
答案 0 :(得分:2)
您可以使用labelFormatter将项目名称替换为堆栈名称。两个系列应隐藏在图例(showInLegend)参数中。然后,只需要捕获legendItemClick并迭代以检查系列堆栈名称。
legendItemClick: function () {
var chart = this.chart,
key = this.options.stack;
$.each(this.chart.series,function(i,serie){
if(serie.options.stack === key) {
if(serie.visible)
serie.hide();
else
serie.show();
}
});
return false;
}
答案 1 :(得分:1)
你真的需要换传说吗?
我会向你推荐那种按跨度切换的问题:http://jsfiddle.net/bLZHd/1/
您只需要:
$.each(chart.series, function (k, v) {
if (v.options.stack == elemId) { //elemId is the string to compare
chart.series[k].show();
} else {
chart.series[k].hide();
}
});