我有一个带有多个 y 轴的多系列柱形图。y 轴设置为只有数组中的第一个 yAxis 的 gridLineWidth=1。其余为零。
我看到的是,如果我隐藏 yAxis 的gridLineWidth = 1 的所有系列项目,则其余系列项目(那些使用非主 yAxis 的项目)根本不会显示网格线。这是有道理的,因为我已将它们的 gridLineWidth 设置为零......
因此,为了始终显示至少一组网格线,我决定处理 plotOptions.column.events 上的隐藏和显示事件(我也尝试了legendItemClick)首先将所有 gridLineWidth 设置为零,然后查找第一个可见系列并将其 yAxis 对象上的 gridLineWidth 设置为 1,如下所示:
plotOptions: {
column: {
...
events: {
show: function (event) {
var series = this.chart.series;
var yAxes = this.chart.yAxis;
// first hide all the gridlines
_.each(yAxes, function (axis) { axis.gridLineWidth = 0; });
var firstVisibleSeries = _.find(series, function (ser) { return ser.visible == true; });
if (firstVisibleSeries != null) {
firstVisibleSeries.yAxis.gridLineWidth = 1;
}
this.chart.redraw();
}
},
...
},
},
...
我将 Underscore.js 用于 _.each() 和 _.find() 方法。
使用 firebug,一切看起来都很好(这意味着第一个可见系列项目的 gridLineWidth = 1,所有其他项目在方法执行结束时都设置为零)。
但无论我做什么,包括我最后绝望地坚持的 this.chart.redraw() 调用,它似乎都没有处理我对 yAxis 对象的更改。如果我隐藏所有使用第一个 yAxis 的系列项目,网格线仍然丢失。
我做错了什么 - 我是否缺少最后一步来使更改永久化,或者我可以采取不同的方法来实现这个目标?
谢谢你的帮助
编辑:
这是一个提出问题的 jsFiddle:http: //jsfiddle.net/kmkuntz/7NEhU/2/
隐藏两个“金钱”类型系列显示网格线消失。