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

如何在Chart.js中复现多段堆叠条形图?

用Chart.js复现目标顶部图表的可行方案

完全可以实现,针对你遇到的两个问题,直接用横向堆叠条形图+多数据集分组的方案就能解决,具体操作如下:

一、实现每个Stream行的多分段条形

把每个Good/Bad分段拆成独立的数据集,给同一Stream下的所有分段设置相同的stack属性,让它们在同一行堆叠:

示例数据结构

const chartData = {
  // y轴标签对应各个Stream
  labels: ['Stream A', 'Stream B', 'Stream C'],
  datasets: [
    // Stream A的第一个Good分段
    {
      label: 'Good',
      data: [12, 0, 0], // 仅在对应Stream位置赋值,其余为0
      backgroundColor: '#2ecc71',
      stack: 'Stream A', // 同一Stream的分段共用stack值
      customTooltip: 'Good 1: 持续12个单位'
    },
    // Stream A的Bad分段
    {
      label: 'Bad',
      data: [4, 0, 0],
      backgroundColor: '#e74c3c',
      stack: 'Stream A',
      customTooltip: 'Bad: 持续4个单位'
    },
    // Stream B的两个Good分段
    {
      label: 'Good',
      data: [0, 8, 0],
      backgroundColor: '#27ae60', // 用深浅区分同类型分段
      stack: 'Stream B',
      customTooltip: 'Good 1: 持续8个单位'
    },
    {
      label: 'Good',
      data: [0, 6, 0],
      backgroundColor: '#2ecc71',
      stack: 'Stream B',
      customTooltip: 'Good 2: 持续6个单位'
    },
    // Stream B的Bad分段
    {
      label: 'Bad',
      data: [0, 3, 0],
      backgroundColor: '#c0392b',
      stack: 'Stream B',
      customTooltip: 'Bad: 持续3个单位'
    }
    // 其他Stream的分段按此逻辑添加
  ]
};

核心配置

开启横向条形+双向堆叠,确保同Stream的分段在同一行:

const chartConfig = {
  type: 'bar',
  data: chartData,
  options: {
    indexAxis: 'y', // 切换为横向条形图
    scales: {
      x: {
        stacked: true, // x轴堆叠,让分段横向排列
        beginAtZero: true
      },
      y: {
        stacked: true, // y轴堆叠,确保同Stream的分段在同一行
        ticks: { maxRotation: 0 } // 避免标签换行
      }
    }
  }
};

二、配置自定义Tooltip

通过tooltip.callbacks读取每个数据集的自定义字段,实现精准提示:

// 在chartConfig.options.plugins中添加tooltip配置
plugins: {
  tooltip: {
    callbacks: {
      // 自定义提示内容
      label: (context) => context.dataset.customTooltip,
      // 提示标题显示当前Stream名称
      title: (context) => context[0].label
    }
  }
}

这个方案比你之前尝试的scatter+折线方案更稳定,完全匹配你要的效果:每个Stream行有多个Good/Bad分段,且每个分段能独立显示自定义tooltip。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 21:53:20