私は、複数の行を持つチャートを持っています。それぞれの行は、それ自身のy軸にプロットされています。行が隠されているかどうかを伝える
私はそれを設定しようとしています。そのため、凡例を介して行が隠されているときに、その上にある軸も非表示になります。私の計画はキャンバスにクリックリスナーを追加し、そこからラインの状態に応じてすべての軸を無効または有効にすることです。
私の問題は、行が隠されているかどうかを判断することです。 dataset.hidden
プロパティは、dataset._meta
の隠し値が定義されていない場合にのみ関連するように見えます。私はこれを念頭においてコードを設定しようとした:このコードは、私のオリジナルのテストのために働い
ctx.onclick = function(){
var changed = false;
for(var j = 0;j < scatterChart.options.scales.yAxes.length;j++){
var oldVal = scatterChart.options.scales.yAxes[j].display;
var hidden = false;
var isHiddenDataSet = scatterChart.data.datasets[j].hidden;
if(isHiddenDataSet){
hidden = true;
}
var isHiddenMeta = scatterChart.data.datasets[j]._meta[0].hidden;
if(isHiddenMeta != null){
hidden = isHiddenMeta;
}
scatterChart.options.scales.yAxes[j].display = !hidden;
changed = changed || oldVal == scatterChart.options.scales.yAxes[j].display;
}
if(changed){
scatterChart.update();
}
}
一つだけのチャートを持っているが、データオブジェクトのインデックスのようにページに複数のチャートがある場合には失敗しました_meta
はグラフからグラフに変更されます。
データセットが非表示になっているかどうかを判断する方法はありますか?それはあなたのために働くので
複数のグラフを扱う場合、 '_meta'が動作しません。 '_meta [0]'を '_meta [Object.keys(scatterChart.data.datasets [j] ._ meta)[0]]'に置き換えてみてください。 – tektiv
@tektivそれは仕事を終わらせる。私はそのような反射的な答えがあると思ったが、それをどうやって行うのかは分からなかった。 – Fr33dan