amCharts 4:是否可以按总计对堆积柱形图的类别进行排序

amCharts 4: Is it possible to sort categories of stacked column chart by totals

是否可以按总数对具有多个堆叠系列的类别柱形图的类别进行排序?

我知道 CategoryAxis 有 属性 sortBySeries 但这只允许按一个特定系列排序。 是否有适用于所有系列的任何等效物或解决方法,例如创建不可见的总系列?

(预排序数据对我来说不是最佳选择,因为我想稍后使用 chart.invalidateRawData 并且排序也必须完成。)

我最终得到的当前解决方案是以编程方式向 chart.data 中的每个对象添加一个 _calcTotal 属性。 该属性的值是通过将所有 value-dataattributes.
的所有值相加计算得出的 例如当单个数据项如下所示时:

{
  country: 'Germany',
  femaleVisitors: 2550,
  maleVisitors: 6029
}

并创建了 maleVisitorsfemaleVisitors 的两个堆叠系列,然后更新的数据项将如下所示:

{
  country: 'Germany',
  femaleVisitors: 2550,
  maleVisitors: 6029,
  _calcTotal: 8579
}

例如,当 beforedatavalidated 事件开始时以及每次更新数据时,都可以进行此计算。 然后我们创建一个新的 column-series,其中 _calcTotal 为 value-datafield,并将该系列的 hidden 属性设置为 true

这个系列现在可以使用 categoryAxis.sortBySeries 属性.

进行排序

但是,当引用的 sorting-series 被隐藏并且使用了 很多 不同类别 (> ~15) 时,amcharts 最初不会对类别进行排序。 解决方法是在图表触发 ready 事件时调用 invalidateRawData。这会导致脏的初始排序动画,但是,总比没有好。

JSFiddle:https://jsfiddle.net/0nr3g6es/1/