動的に更新されたデータが表示されているページに棒グラフがあります。私が持っている問題は、表示されているデータに基づいてy軸のタイプを変更する必要があるということです。データの範囲が100未満(たとえば0〜99)で対数が大きい場合(たとえば0〜1000)は線形尺度にする必要があります。chartjsグラフのスケールタイプを動的に更新します
私は対数尺度が必要かどうかを計算できますが、尺度タイプを変更する場合は紛失します。タイプを変更することを考えて、
Object.keys(mychart.scales).forEach((function (axisName) {
var axis = myChart.scales[axisName];
if (axis && axis.id.startsWith('y')) {
axis.options.type = 'logarithmic'
}
}));
myChart.update();
を、私はbeforeBuildTicks
コールバックを使用してみました:私は、チャートのoptions
オブジェクトを変更してupdate()
を呼び出す試してみました:
myChart.options/scales.yAxes.map(function (axis) { axis.type = 'logarithmic' });
myChart.update();
とも直接規模自体を変えてみましたデータを更新して、グラフを再描画するのが遅すぎるか、間違ったタイミングになった可能性があります。
beforeBuildTicks: function (scale) {
if (scale.chart) {
console.log('logarithmic');
scale.options.type = 'logarithmic';
}
}
これらのすべてhesはグラフオブジェクトを変更しますが、表示は影響を受けません。
グラフ全体を破棄して再作成することなく、chartjs棒グラフの尺度タイプを動的に変更する方法はありますか?
これは実際にYSCALEに、対数1に目盛りの間の差をスケールを変更するには表示されません。すべてのティックの間で同じように、空間的な分離であり、それは定義上、リニアスケールである。私は最終的に解決策を見つけました(私は 'scaleMerge'へのポインタのためにあなたに感謝しなければなりません)私の答えを見てください – MikeW