You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ChartJS 4.x迁移:如何在tooltip回调中访问其他数据集?

解决ChartJS 3.x/4.x中tooltip回调访问其他数据集的问题

在ChartJS 3.x及之后的版本中,虽然移除了tooltip回调里的data参数,但你可以通过tooltipItem.chart访问到整个图表实例,进而获取所有数据集的数据。同时注意,原tooltipItem.index已改名为tooltipItem.dataIndex,这也是迁移时容易忽略的细节。

修改后的回调函数如下:

callbacks: {
    label: function(tooltipItem) {
        // 通过chart实例获取完整数据对象
        const chartData = tooltipItem.chart.data;
        // 当前数据集
        const dataset = tooltipItem.dataset;
        
        // 获取对应索引的两个数据集数值
        const count_with = chartData.datasets[0].data[tooltipItem.dataIndex];
        const count_without = chartData.datasets[1].data[tooltipItem.dataIndex];
        const total = count_with + count_without;

        const this_dataset_count = dataset.data[tooltipItem.dataIndex];
        const this_dataset_perc = (this_dataset_count / total * 100).toFixed(1);

        let label = dataset.label + ": ";
        label += this_dataset_count + " (" + this_dataset_perc + "%)";
        return label;
    }
}

关键说明:

  • tooltipItem.chart包含了图表的所有配置和数据,chart.data就是你初始化时传入的完整数据对象,和旧版回调中的data参数完全一致。
  • 必须使用tooltipItem.dataIndex替代旧版的tooltipItem.index,否则会无法正确定位到对应位置的数据。

这样修改后,就能和旧版逻辑一致,计算堆叠部分的百分比并生成自定义tooltip内容。

内容的提问来源于stack exchange,提问作者DukeSilver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 13:20:28