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

Highcharts堆叠柱状图数据标签计算平均值如何忽略零值

图表示例

问题背景

现有堆叠图表已经实现零值隐藏效果,但堆叠标签的平均值计算逻辑存在偏差:

  • 原逻辑固定除以全量系列总数,把值为0、实际不显示的系列也计入分母,导致平均值计算结果不准
  • 当前在用的yAxis.StackLabels.formatter配置代码:
function() {
  return Highcharts.numberFormat(this.total / this.axis.chart.series.length);
}

比如总共有3个系列时,分母固定返回3,但如果当前x轴点位下有1个系列值为0、实际不参与堆叠展示,正确的分母应该是2。
测试取单系列对应点位的返回数据为42,0,0,0,0,57,确实存在多个0值点位。

修复方案

在formatter逻辑里先遍历所有系列,统计当前x点位下值非0的有效系列数量,再用堆叠总和除以有效系列数即可,替换后的代码如下:

function() {
  let validSeriesCount = 0;
  // 遍历系列统计当前x位置非0的有效系列数
  this.axis.series.forEach(series => {
    const currentVal = series.yData[this.x];
    // 排除0、null、undefined值,有其他过滤规则可自行修改判断条件
    if (currentVal !== 0 && currentVal != null) {
      validSeriesCount++;
    }
  });
  // 处理无有效数据场景,避免除以0报错
  const average = validSeriesCount > 0 ? this.total / validSeriesCount : 0;
  return Highcharts.numberFormat(average);
}

如果你的零值判定规则不是严格等于0(比如小于某个阈值就隐藏不计入统计),直接修改if判断里的条件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:42:20