簡體   English   中英

ChartJS v2:點擊坐標處的縮放值(時間刻度)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM