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

Highcharts:将柱状图堆叠顺序设为升序(底部值最大)

堆叠柱状图按数值从大到小排列的解决方法

你用series.dataSorting没效果是因为这个配置管的是同一系列里不同数据项的排序,而堆叠柱状图的层级顺序是由series数组的顺序决定的——数组里排前面的系列,堆叠出来就越靠下。

要实现数值最大的在底部、最小在顶部,得这么做:

  • 先算出每个系列的总数值(单类目直接取对应数据值;多类目就取该系列所有数据的总和)
  • 把series数组按总数值降序排序,数值大的排前面
  • 最后把排序后的series放进ECharts配置里

举个代码例子:

// 原始的系列数据
let originalSeries = [
  { name: 'A', type: 'bar', stack: 'total', data: [30] },
  { name: 'B', type: 'bar', stack: 'total', data: [50] },
  { name: 'C', type: 'bar', stack: 'total', data: [20] }
];

// 按系列数值降序排序,单数据项直接取data[0],多数据项用reduce求和
let sortedSeries = originalSeries.sort((a, b) => {
  const valA = a.data[0];
  const valB = b.data[0];
  return valB - valA; // 降序,大的在前,堆叠靠下
});

// 初始化图表
const myChart = echarts.init(document.getElementById('main'));
const option = {
  xAxis: { type: 'category', data: ['类目1'] },
  yAxis: { type: 'value' },
  series: sortedSeries
};
myChart.setOption(option);

要是你需要每个类目下的堆叠都单独按数值排序,ECharts没有现成配置,得针对每个类目重新计算series顺序再动态渲染,不过大部分场景用系列总和排序就够了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:01:14