我有一個頁面上的條形圖,顯示的數據是動態更新的。我遇到的問題是,我需要根據顯示的數據更改y軸的類型。當數據的範圍小於100(例如0-99)時,我需要它是線性標度,如果它的值更大(例如0-1000),則需要對數。動態更新chartjs圖的刻度類型
我可以計算出我是否需要對數刻度或者不好,但是當涉及到改變刻度類型時我很茫然。我試圖改變圖表的options
對象並調用update()
:
myChart.options/scales.yAxes.map(function (axis) { axis.type = 'logarithmic' });
myChart.update();
,並試圖改變規模本身直接:
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
回調,以爲改變類型而更新的數據,並重新繪製圖形,也許爲時已晚,或只是在錯誤的時間:
beforeBuildTicks: function (scale) {
if (scale.chart) {
console.log('logarithmic');
scale.options.type = 'logarithmic';
}
}
所有這些approac的他改變圖表對象,但顯示不受影響。
有沒有辦法在不破壞和重新創建整個圖表的情況下動態更改chartjs條形圖的比例類型?
這並不出現在刻度實際上改變爲對數之一,蜱之間的差在yscale當「變化」被製成設置比例爲對數是所有蜱的空間分隔都是相同的,根據定義,它是一個線性尺度。我終於找到了一個解決方案(我必須感謝你指向'scaleMerge'的指針),看看我的答案 – MikeW