是否可以按总数对具有多个堆叠序列的类别柱形图的类别进行排序?
我知道CategoryAxis
具有属性sortBySeries
,但这仅允许按一个特定系列进行排序。
所有系列都具有等同功能吗?还是诸如创建不可见的总系列之类的解决方法?
(对我来说,对数据进行预排序不是最佳选择,因为以后我想使用chart.invalidateRawData
,然后也必须对数据进行排序。)
答案 0 :(得分:0)
我最终得到的当前解决方案是以编程方式向_calcTotal
中的每个对象添加一个chart.data
属性。
该属性的值是通过将所有value-dataattributes的所有值相加得出的。
例如当单个数据项看起来像这样:
{
country: 'Germany',
femaleVisitors: 2550,
maleVisitors: 6029
}
,并为maleVisitors
和femaleVisitors
创建了两个堆叠的序列,然后更新的数据项将如下所示:
{
country: 'Germany',
femaleVisitors: 2550,
maleVisitors: 6029,
_calcTotal: 8579
}
例如,当beforedatavalidated
事件开始时以及每次您更新数据时,都可以执行此计算。
然后,我们使用_calcTotal
作为值数据字段创建一个新的列系列,并将该系列的hidden
属性设置为true
。
此系列现在可以通过使用categoryAxis.sortBySeries
属性进行排序。
但是,当隐藏所引用的排序系列并且使用很多不同类别(>〜15)时,amcharts最初不会对类别进行排序。
一种解决方法是在图表触发ready
事件时调用invalidateRawData
。这样会导致初始排序动画变脏,但是,总比没有好。
JSFiddle:https://jsfiddle.net/0nr3g6es/1/