答案 0 :(得分:3)
您可以应用CSS设置图例样式,以达到所需的效果。
具体来说,利用在每个图例项上添加的highcharts-legend-item-hidden
类(即,在单击它以隐藏系列后),强制标记的颜色保持相同。
例如,要确保第一个数据系列的图例标记始终保持为#ff6600
:
.highcharts-series-0.highcharts-legend-item-hidden .highcharts-graph {
stroke: #ff6600;
}
.highcharts-series-0.highcharts-legend-item-hidden .highcharts-point {
fill: #ff6600;
}
答案 1 :(得分:3)
作为替代方案,使用Legend.colorizeItem
的包装来对图例项legendLine
和legendSymbol
进行后处理,以“撤消”隐藏颜色的设置:
(function (H) {
H.wrap(H.Legend.prototype, 'colorizeItem', function (proceed, item, visible) {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
if(item.legendLine) {
item.legendLine.attr({ stroke: item.color });
}
if(item.legendSymbol) {
if ((item.options && item.options.marker) && item.legendSymbol.isMarker)
item.legendSymbol.attr(item.pointAttribs());
else
item.legendSymbol.attr({ fill: item.color });
}
});
}(Highcharts));
item.LegendSymbol
的详细代码用于保留可能设置的所有标记选项。它模仿了colorizeItem
的默认行为,而没有考虑visible
的真实性。