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

ChartJs双层饼图悬浮提示标签显示错误问题求助

问题原因

你的tooltip标签匹配逻辑依赖固定索引计算,这种实现方式对Chart.js版本兼容性较差,如果你最近更新过Chart.js版本,很容易出现索引取值异常导致标签匹配错误,这也是你之前代码正常、回滚后仍失效的核心原因。另外你代码中第一个数据集引用的变量名studenGesamt和你备注里定义的stundenGesamt存在1个字母的拼写差异,如果不是笔误也会导致数据异常,你可以优先核对下变量名。

修复方案

放弃全局labels+索引计算的匹配方式,把标签拆分到对应数据集内部,直接从当前上下文取对应数据集的标签,逻辑更稳定,不会受版本变更影响:

// 调整data结构,每个dataset自带对应labels
const data = {
    datasets: [
      {
        labels: ['Summe', 'Noch um Ziel zu erreichen'],
        backgroundColor: ['#5ce1e6', '#2acaea'],
        data: [stundenGesamt, (800 - stundenGesamt)] // 注意修正变量名拼写
      },
      {
        labels: ['Tage', 'Verbleibende Tage im Monat'],
        backgroundColor: ['#cd1076', '#8b0a50'],
        data: [dayD, (23 - dayD)]
      },
    ]
  };

// 饼图配置
let outterChart = new Chart(chart, {
    type: 'pie',
    data: data,
    options: {
    responsive: true,
    plugins: {
      legend: {
        labels: {
          generateLabels: function(chart) {
            const original = Chart.overrides.pie.plugins.legend.labels.generateLabels;
            const labelsOriginal = original.call(this, chart);
            var datasetColors = chart.data.datasets.map(function(e) {
              return e.backgroundColor;
            });
            datasetColors = datasetColors.flat();
            labelsOriginal.forEach(label => {
              label.fillStyle = datasetColors[label.index];
            });
            return labelsOriginal;
          }
        },
        onClick: function(mouseEvent, legendItem, legend) {
          legend.chart.getDatasetMeta(
            legendItem.datasetIndex
          ).hidden = legend.chart.isDatasetVisible(legendItem.datasetIndex);
          legend.chart.update();
        }
      },
       tooltips: {
        callbacks: {
          label: function(context) {
            // 直接取当前数据集的对应标签,不需要计算全局索引
            const currentLabel = context.dataset.labels[context.dataIndex]
            return currentLabel + ': ' + context.formattedValue;
          }
        }
      },
    }
  },
});

如果修改后仍有问题,把Chart.js版本回退到你上周正常运行时的版本即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:36:05