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
相关产品推荐
相关产品推荐

