当我单击栏时,我想要获得 y 标签值。
就像上面的例子一样,当我点击二月蓝色条时,我想要标签值,即 40
我在 stackOverFlow 和其他网站上查找了示例,但他们只有图例显示的标签示例。
我尝试过的一些代码
onClick: function(evt, element) {
var activePoints = bar_chart.getElementAtEvent(evt);
console.log(activePoints[0]._model.datasetLabel);
}
当您单击该演示时,它会在条形图中给出该值。 我不是 Chart.js 专家,所以可能有更好的解决方案。
https://codepen.io/newschapmj1/pen/PerOzM
/* from https://github.com/chartjs/Chart.js/issues/2292 */
document.getElementById("myChart").onclick = function (evt) {
var activePoints = myChart.getElementsAtEventForMode(evt, 'point', myChart.options);
var firstPoint = activePoints[0];
var label = myChart.data.labels[firstPoint._index];
var value = myChart.data.datasets[firstPoint._datasetIndex].data[firstPoint._index];
alert(label + ": " + value);
};
Chart.js 版本 = 3.2.1
来自官方文档:
onClick: (evt) => { const points = myChart.getElementsAtEventForMode(evt, 'nearest', { intersect: true }, true); if (points.length) { const firstPoint = points[0]; var label = myChart.data.labels[firstPoint.index]; var value = myChart.data.datasets[firstPoint.datasetIndex].data[firstPoint.index]; alert(label +" : "+ value); } }
我需要一种从回调中获取图表的方法,因为我对多个图表使用相同的回调,所以我不能只说
myChart
这有效,传递给图表选项 - 第二个参数称为“activeElements”,可用于获取图表:
onClick: (event, activeElements) => {
if(activeElements.length === 0){
alert("Chart is clickable but you must click a data point to drill-down")
}
const chart = activeElements[0]._chart
const activePoints = chart.getElementsAtEventForMode(event, 'point', chart.options);
const firstPoint = activePoints[0];
const label = chart.data.labels[firstPoint._index];
const value = chart.data.datasets[firstPoint._datasetIndex].data[firstPoint._index];
alert(label + ": " + value);
}
混合 mikeb 和 Mrunalraj Redij 答案。添加 Hover 并使用“index”和“intersect: false”来选择值,即使鼠标指针不在线上。
chartClickHoverCB(event, activeElements, chart) {
const points = chart.getElementsAtEventForMode(event, 'index', { intersect: false }, true);
if (points.length) {
const firstPoint = points[0];
var label = chart.data.labels[firstPoint.index];
var value = chart.data.datasets[firstPoint.datasetIndex].data[firstPoint.index];
console.log(label +" : "+ value);
}
}
chartOptions: ChartOptions = {
....
onClick: this.chartClickHoverCB,
onHover: this.chartClickHoverCB,
};