繁体   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