举个例子,这是我用来解释这个问题的图表。
$(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/
谢谢
发布于 2013-07-05 17:35:39
您可以使用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;
}http://api.highcharts.com/highcharts#legend.labelFormatter
发布于 2013-07-05 14:24:59
你真的需要用图例来切换吗?
我会向您推荐这种问题,即按跨度切换: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();
}
});https://stackoverflow.com/questions/17480981
复制相似问题