鼠标单击Chart.js创建数据点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了鼠标单击Chart.js创建数据点相关的知识,希望对你有一定的参考价值。

我是Chart.js和javascript的新手。目前正在使用折线图,现在我想将自定义数据点添加到鼠标单击事件中(当我按下数据集上的某个位置时,它会获取Y轴的当前值并使用该值创建一个数据点那个地方)。我从http://www.chartjs.org/samples/latest/charts/line/basic.html获取代码并尝试修改它。这是我当前图表的链接:https://i.stack.imgur.com/M9MF1.jpg

我使用基本的chart.bundle.js库,并使用D3.js库使数据点可拖动。

尝试使用以下代码实现每次鼠标点击的创建,但似乎到目前为止它并不好。

document.getElementById('canvas').onclick = function(e){
    //getting value by pressing on dataset 
     value = chartInstance.scales[scale].getValueForPixel(e.clientY)
     //trying to create dataPoint 
     myLineChart.points.push(new this.PointClass({
                    y: value;
                    strokeColor: this.datasets[datasetIndex].pointStrokeColor,
                    fillColor: this.datasets[datasetIndex].pointColor
                    }));
    //after all updating my chart
    chartInstance.Update(0)
};

也许有人可以解释一下这个库以及它如何创建数据点的更多信息?

答案

图表中的每个新点都是数据,因此您需要在数据(chartData.data.dataset [])数组中添加该点。而不是添加myLineChart.points我不确定你为什么使用你应该在数据数组中添加数据点,并且应该在chartOptions.scales.yAxes中指定颜色等UI装饰[数组。因此,为了在图表中添加点,请使用:

// here i is the corresponding parameter for which you want to add the new point
chartInstance.data.datasets[i].push(value); 
chartInstance.update();

以上是关于鼠标单击Chart.js创建数据点的主要内容,如果未能解决你的问题,请参考以下文章

web页面 chart.js 怎样在折线图的点上显示对应数值?

Chart.js - 鼠标悬停时自定义css到数据集

悬停时如何在chart.js中的特定点添加水平线?

Chart Js显示鼠标悬停时的旧数据

从 jsonfile 数据创建多个 chart.js 图表

为chart.js中的水平条添加值