我有一个包含多个y轴的多系列柱形图。设置y轴使得仅阵列中的第一个yAxis具有gridLineWidth = 1。其余的都是零。
我所看到的是,如果我隐藏yAxis具有gridLineWidth = 1的所有系列项目,则系列项目的其余部分(使用非主要yAxis的项目)根本不显示网格线)。这是有道理的,因为我已将gridLineWidth设置为零...
因此,为了始终显示至少一组网格线,我决定在plotOptions.column.events上处理hide和show事件(我也试过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/
隐藏两个'钱'类型系列显示网格线消失。
答案 0 :(得分:0)
感谢highslide论坛上的cailie,这已得到解决。
来自帖子:在yAxis电话之后我需要'.options':
firstVisibleSeries.yAxis.options.gridLineWidth = 1;
基础jsfiddle包含修复:http://jsfiddle.net/7NEhU/