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

Chart.js散点图数据点悬浮提示x轴月份标签显示错误如何修复

Chart.js 2.9.4散点图分类轴tooltip显示错误修复方案

问题根因

Chart.js 2.9.x版本的散点图默认对x值做数值类型解析,传入字符串"March"时,框架无法解析为有效数值,会默认赋值为索引0。渲染点位时因为x轴配置为category类型,会按字符串匹配labels数组找到对应索引2渲染,所以点位位置正确,但tooltip读取的是解析后的数值索引0,对应labels数组第一项January,因此出现显示错误。

修复方案

方案1:将x值替换为对应标签的索引(最简洁)

直接使用目标标签在labels数组的索引作为x值即可,无需修改其他配置:

var xyValues = [
  // March对应labels数组的索引为2,直接传数值作为x值
  {x: 2, y:15},
];

修改后点位位置和tooltip都会自动匹配正确的标签。

方案2:自定义tooltip回调(保留原字符串x值)

如果不想改动原有数据格式,可重写tooltip的标题回调,手动匹配x轴标签:

new Chart("myChart", {
  type: "scatter",
  data: {
    datasets: [{
      pointRadius: 4,
      pointBackgroundColor: "rgb(0,0,255)",
      data: xyValues
    }]
  },
  options: {
    legend: {display: false},
    scales: {
      xAxes: [{ type: 'category', labels: ['January', 'February', 'March', 'April', 'May', 'June'] }],
      yAxes: [{ticks: {min: 6, max:16}}],
    },
    // 新增tooltip自定义配置
    tooltips: {
      callbacks: {
        title: function(tooltipItems, data) {
          // 读取当前点位对应x轴的实际标签
          const xLabel = this._chart.scales['x-axis-0'].labels[tooltipItems[0].index];
          return `${xLabel} ${tooltipItems[0].yLabel}`;
        }
      }
    }
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:45:00