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

Chart.js 2.9.4 如何彻底移除0值柱形及对应空白间隙

这个需求可以实现,空白间隙是Chart.js 2.9.x版本分组柱状图的默认特性:每个分类下会为所有数据集均等分配宽度,即使对应数值为0也会预留占位。你可以通过以下方式解决:

方案1:直接隐藏0值柱子的占位

在原有配置的options中新增animation回调,强制将0值柱子的宽度设为0,完全消除间隙:

var myLineChart = new Chart(ctx, {
  // 原有type、data配置保持不变
  options: {
    // 新增以下animation配置
    animation: {
      onProgress: function(animation) {
        const chart = animation.chart
        chart.data.datasets.forEach((ds, dsIdx) => {
          ds.data.forEach((val, dataIdx) => {
            if (val <= 0) {
              const meta = chart.getDatasetMeta(dsIdx)
              meta.data[dataIdx]._view.width = 0
            }
          })
        })
      }
    },
    // 原有plugins、responsive、title等其他配置全部保留
  }
})

方案2:让有值柱子自动填充空余宽度

如果希望分类下的有效柱子自动占满整个分类宽度,可以在x轴配置中调整柱子占比参数:

xAxes: [{
  // 原有time、gridLines、ticks配置保持不变
  barPercentage: 1,
  categoryPercentage: 0.9
}]

方案3:数据预处理(最优)

如果不需要保留原有数据集的0值占位逻辑,可以提前过滤掉每个分类下所有值为0的数据集项,重构labels和datasets结构,从数据源层面消除空占位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:18:04