1

我有一个带有多个 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/

隐藏两个“金钱”类型系列显示网格线消失。

4

1 回答 1

0

感谢highslide 论坛上的 Cailie ,这已解决。

来自帖子:在 yAxis 调用之后我需要“.options”:

firstVisibleSeries.yAxis.options.gridLineWidth = 1;

基础 jsfiddle 包含修复:http: //jsfiddle.net/7NEhU/

于 2012-05-01T16:13:22.153 回答