[英]ChartJS v2: Scale value at click coordinates (time scale)
我有一個時基折線圖,我試圖在點擊坐標處獲取每個比例的值。
我在 ChartJS 選項中指定的 onClick function 選項:
onClick: function(event, elementsAtEvent)
{
console.log(event, elementsAtEvent, this);
var valueX = null, valueY = null;
for (var scaleName in this.scales) {
var scale = this.scales[scaleName];
console.log(scale.id, scale.isHorizontal());
if (scale.isHorizontal()) {
valueX = scale.getValueForPixel(event.offsetX);
} else {
valueY = scale.getValueForPixel(event.offsetY);
}
}
console.log(event.offsetX, valueX, null, event.offsetY, valueY);
},
JSFiddle: https://jsfiddle.net/AllenJB/dmebo9g5/1/
上面的代碼似乎適用於 Y 軸,但不適用於 X(時間刻度) - 無論您單擊圖表中的哪個位置,它總是返回最后一個值。
我可能做錯了什么?
這段代碼實際上運行正常。 唯一的問題是我正在查看moment對象的_i值來檢查它的值(這是在創建對象時用作初始輸入的值,不一定是當前值)。
將console.log行更改為以下結果會產生預期/正確的結果:
console.log(event.offsetX, valueX.format('YYYY-MM-DD HH:mm:ss'), null, event.offsetY, valueY);
如果你想得到最近的 x 軸值,你可以這樣做:
onClick: function (event) {
const activeElements = this.getElementsAtXAxis(event);
const xval = this.scales['x-axis-0']._timestamps.data[activeElements[0]._index];
console.log(xval)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.