你需要使用
标签回调函数。
一个常见的例子是将数据值四舍五入到两位小数,以下示例将数据舍入到两位小数。
var chart = new Chart(ctx, {
type: 'line',
data: data,
options: {
tooltips: {
callbacks: {
label: function(tooltipItem, data) {
var label = data.datasets[tooltipItem.datasetIndex].label || '';
if (label) {
label += ': ';
}
label += Math.round(tooltipItem.yLabel * 100) / 100;
return label;
}
}
}
}
});
现在让我写一下我使用标签回调功能的情况。
首先记录Label Callback函数的参数,你将看到类似于这里数据集的结构,它由不同的行组成,你想在图表中绘制。
在我的情况下,有4个,因此数据集数组的长度为4。
在我的情况下,我需要对每个数据集执行一些计算,并且每次悬停在图表中的一条线上时都需要识别正确的线。
为了区分不同的线并根据其他线的数据操作悬停提示框的数据,我必须编写这个逻辑。
callbacks: {
label: function (tooltipItem, data) {
console.log('data', data);
console.log('tooltipItem', tooltipItem);
let updatedToolTip: number;
if (tooltipItem.datasetIndex == 0) {
updatedToolTip = tooltipItem.yLabel;
}
if (tooltipItem.datasetIndex == 1) {
updatedToolTip = tooltipItem.yLabel - data.datasets[0].data[tooltipItem.index];
}
if (tooltipItem.datasetIndex == 2) {
updatedToolTip = tooltipItem.yLabel - data.datasets[1].data[tooltipItem.index];
}
if (tooltipItem.datasetIndex == 3) {
updatedToolTip = tooltipItem.yLabel - data.datasets[2].data[tooltipItem.index]
}
return updatedToolTip;
}
}
上述场景在绘制折线图并根据图表中不同线的不同点的数据操纵悬停点的工具提示时非常有用,前提是这些点在相同的索引位置。
return data.datasets[tooltipItem.datasetIndex].label + " $"
以保留标签。 - Alex Levine