在 ChartJS 中获取 X、Y onClick 图表坐标

ade*_*ago 5 javascript click onclick onclicklistener chart.js

如何使用 ChartJS V > 2.0 中的 onClick 事件获取相对于图表的 X、Y 坐标?

这个 JSFiddle为例。在 中创建分散#canvas。单击图表的中心时,即使那里没有数据点,我也应该得到 0, 0 。

MJ_*_*les 5

对于未来的读者,一个可行的解决方案:

chartClicked(event){
    var yTop = this.chart.chartArea.top;
    var yBottom = this.chart.chartArea.bottom;

    var yMin = this.chart.scales['y-axis-0'].min;
    var yMax = this.chart.scales['y-axis-0'].max;
    var newY = 0;

    if (event.offsetY <= yBottom && event.offsetY >= yTop) {
        newY = Math.abs((event.offsetY - yTop) / (yBottom - yTop));
        newY = (newY - 1) * -1;
        newY = newY * (Math.abs(yMax - yMin)) + yMin;
    };

    var xTop = this.chart.chartArea.left;
    var xBottom = this.chart.chartArea.right;
    var xMin = this.chart.scales['x-axis-0'].min;
    var xMax = this.chart.scales['x-axis-0'].max;
    var newX = 0;

    if (event.offsetX <= xBottom && event.offsetX >= xTop) {
        newX = Math.abs((event.offsetX - xTop) / (xBottom - xTop));
        newX = newX * (Math.abs(xMax - xMin)) + xMin;
    };

    console.log(newX, newY);
};
Run Code Online (Sandbox Code Playgroud)

感谢chart.js之2.0当前鼠标坐标提示


小智 1

对于旧代码,我很抱歉,我没有看到文档,也许您可​​以在文档中找到更多有用的内容,我在旧学校模式下做了:)。

根据客户身高定位:

canvas.onclick = function(evt){
    alert(evt.pageX, evt.pageY)
};
Run Code Online (Sandbox Code Playgroud)

基于图表的位置:

var config = {}; //different (data, datasets, tooltips ...)
var ctx = document.getElementById("canvas").getContext("2d");
var Charts= new Chart.Scatter(ctx, config);
canvas.onclick = function(evt){
  var activePoints = Charts.getElementsAtEvent(evt);
  var firstPoint = activePoints[0];
  if(firstPoint !== undefined){
    var label = Charts.data.labels[firstPoint._index];
    var value = Charts.data.datasets[firstPoint._datasetIndex].data[firstPoint._index];

    alert(label + ": " + value.x);
    alert(label + ": " + value.y);
  }
};
Run Code Online (Sandbox Code Playgroud)

摘自那里:) Chart.js 中饼图上的点击事件感谢他。问候。