1

複数の y 軸を持つ複数系列の縦棒グラフがあります。y 軸は、配列内の最初の yAxis だけが gridLineWidth=1 を持つように設定されます。残りはゼロです。

私が見ているのは、yAxis がgridLineWidth =1 であるすべてのシリーズ アイテムを非表示にすると、残りのシリーズ アイテム (非プライマリ yAxis を使用するアイテム) に対してグリッド線がまったく表示されないことです。gridLineWidth をゼロに設定したので、これは理にかなっています...

そのため、常に少なくとも 1 つのグリッド線のセットを表示するために、最初にすべての gridLineWidth をゼロに設定し、次に最初のものを探すために、plotOptions.column.events のhideイベントとshowイベントを処理することにしました ( legendItemClickも試しました)。次のように、表示されているシリーズの 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();
            }
        },
    ...
    },
},
...

_.each() および _.find() メソッドに Underscore.js を使用しています。

firebug を使用すると、すべてが適切に見えます (つまり、最初に表示されるシリーズ アイテムの gridLineWidth = 1 であり、メソッド実行の最後に他のすべてのアイテムがゼロに設定されます)。

しかし、私が必死になって最後に立ち往生した this.chart.redraw() 呼び出しを含め、私が何をしても、yAxis オブジェクトへの変更を処理しているようには見えません。最初の yAxis を使用するすべてのシリーズ アイテムを非表示にすると、グリッド線がまだ表示されません。

私は何か間違ったことをしていますか - 変更を永続的にするために欠けている最後のステップはありますか、それともこの目標を達成するために取ることができる別のアプローチはありますか?

ご協力いただきありがとうございます

編集:

この問題を示す jsFiddle は次のとおりです: http://jsfiddle.net/kmkuntz/7NEhU/2/

両方の「お金」タイプのシリーズを非表示にすると、グリッド線が消えます。

4

1 に答える 1

0

highslideフォーラムの calieのおかげで、これは解決されました。

投稿から: yAxis 呼び出しの後に「.options」が必要でした:

firstVisibleSeries.yAxis.options.gridLineWidth = 1;

ベースの jsfiddle には修正が含まれています: http://jsfiddle.net/7NEhU/

于 2012-05-01T16:13:22.153 に答える