如何从饼图类型的图例中排除一个特定数据点,但显示所有其他数据点?
问问题
2511 次
3 回答
3
我可以找到的 HighCharts 目前不存在该选项,但是,您可以对源代码进行一些修改以使其正常工作。
我使用v2.3.3
了这个 hack 的版本,但是,其他版本可能会类似地工作。
有问题的代码在第 9336 行附近:
allItems = [];
each(chart.series, function (serie) {
var seriesOptions = serie.options;
if (!seriesOptions.showInLegend) {
return;
}
// use points or series for the legend item depending on legendType
allItems = allItems.concat(
serie.legendItems ||
(seriesOptions.legendType === 'point' ?
serie.data :
serie)
);
});
在该代码之后,立即放置以下代码:
for (var i=0;i<allItems.length;i++){
if (typeof allItems[i].showInLegend !== "undefined"){
if (!allItems[i].showInLegend){
allItems.splice(i,1)
i--;
}
}
}
然后对于点集 showInLegend=false 像这样:
{
name: 'Chrome',
y: 12.8,
sliced: true,
selected: true,
showInLegend: false
},
这是一个显示工作概念的 JSFiddle:http: //jsfiddle.net/mkremer90/zXSJW/
于 2013-03-12T13:46:55.707 回答
0
于 2013-03-12T13:57:30.317 回答
0
您可以使用“假”系列,如下例所示:
其中介绍了如何在图例中显示定义的项目。
legendItemClick: function (event) {
console.log(this);
var thisSeriesId = this.id;
var thisSeriesVisibility = this.visible ? true : false;
$(chart.series).each(function (i, e) {
$(e.data).each(function(j, k){
if (thisSeriesId === k.id) {
thisSeriesVisibility ? k.setVisible(false) : k.setVisible(true);
}
});
});
event.preventDefault();
}
于 2013-03-13T12:44:32.903 回答