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

Chart.js如何绘制悬停时可显示对应数据的水平直线

问题解决方法

你当前的折线数据集仅配置了单个数据点,Chart.js默认不会将单点渲染为横跨绘图区的水平直线,同时默认交互命中范围较窄,导致悬停很难触发数值提示。按以下方式修改代码即可实现需求:

  • 为Total Recordings折线补充左右边界的等Y值数据点,形成贯穿全图的水平直线
  • 隐藏折线默认的点位标记,仅保留悬停时的触发点,保证视觉整洁
  • 调整图表交互规则与X轴刻度配置,确保悬停直线可正常显示总数值,且不影响原有柱状图展示

修改后完整代码

ngOnInit(): void {
  const myChart = new Chart('myChart', {
    type: 'bar',
    data: {
      labels: ['Recordings'],
      datasets: [
        {
          label: 'A',
          data: [this.data.a],
          borderColor: 'rgba(255,105,180,1)',
          backgroundColor: 'rgba(255,105,180,0.2)',
          barPercentage:0.4,
          borderWidth:2,
          order: 1
        },
        {
          label: 'B',
          data: [this.data.b],
          borderColor: 'rgba(75, 192, 192, 1)',
          backgroundColor: 'rgba(75, 192, 192, 0.2)',
          barPercentage:0.4,
          borderWidth:2,
          order: 2
        },
        {
          label: 'Total Recordings',
          // 配置两个边界点生成水平直线
          data: [
            {x: -0.5, y: this.data.totalrecordings},
            {x: 1.5, y: this.data.totalrecordings}
          ],
          type:'line',
          borderColor:'rgba(2,117,216,1)',
          backgroundColor:'rgba(2,117,216,0.2)',
          borderWidth: 2,
          order:0,
          pointRadius: 0, // 隐藏常规点位
          pointHoverRadius: 6, // 悬停时放大点位方便触发提示
          tension: 0, // 强制直线无弧度
          fill: false // 关闭区域填充避免遮挡柱状图
        }
      ]
    },
    options: {
      responsive: true,
      // 调整交互模式,悬停到直线即可触发提示
      interaction: {
        mode: 'nearest',
        intersect: true
      },
      plugins: {
        legend: {
          position: 'top',
        }
      },
      scales: {
        x: {
          // 锁定X轴范围适配水平直线
          min: -0.5,
          max: 1.5,
          ticks: {
            // 仅显示原有Recordings标签,隐藏虚拟点位刻度
            callback: function(val) {
              return val === 0 ? 'Recordings' : '';
            }
          }
        }
      }
    },
  })
}

效果说明

修改完成后,Total Recordings会显示为横跨整个图表区域的蓝色水平直线,鼠标悬停到直线任意位置都会触发tooltip,展示总录制数的具体数值,原有A、B两类数据的柱状展示不受影响。

当前原始渲染效果


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:48:21