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
}
并创建了 maleVisitors
和 femaleVisitors
的两个堆叠系列,然后更新的数据项将如下所示:
{
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/
是否可以按总数对具有多个堆叠系列的类别柱形图的类别进行排序?
我知道 CategoryAxis
有 属性 sortBySeries
但这只允许按一个特定系列排序。
是否有适用于所有系列的任何等效物或解决方法,例如创建不可见的总系列?
(预排序数据对我来说不是最佳选择,因为我想稍后使用 chart.invalidateRawData
并且排序也必须完成。)
我最终得到的当前解决方案是以编程方式向 chart.data
中的每个对象添加一个 _calcTotal
属性。
该属性的值是通过将所有 value-dataattributes.
的所有值相加计算得出的
例如当单个数据项如下所示时:
{
country: 'Germany',
femaleVisitors: 2550,
maleVisitors: 6029
}
并创建了 maleVisitors
和 femaleVisitors
的两个堆叠系列,然后更新的数据项将如下所示:
{
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/