amCharts 4: Можно ли сортировать категории столбчатой ​​диаграммы с накоплением по итоговым значениям - PullRequest
0 голосов
/ 02 августа 2020
• 1000 1009 * серия. Есть ли какой-либо эквивалент для всех серий или обходной путь, например, создание невидимой общей серии?

(Предварительная сортировка данных - не лучший выбор для меня, так как я хотел бы использовать chart.invalidateRawData позже, и сортировка также должна готово тогда.)

1 Ответ

0 голосов
/ 04 августа 2020

Текущее решение, к которому я пришел, - это программно добавить атрибут _calcTotal к каждому объекту в chart.data. Значение этого атрибута вычисляется путем сложения всех значений всех атрибутов значения-данных.
например, когда один элемент данных выглядит следующим образом:

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

и две составные серии для maleVisitors и femaleVisitors создаются, то обновленный элемент данных будет выглядеть так:

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

Эти вычисления могут быть выполнены, например, когда начинается событие beforedatavalidated и каждый раз, когда вы обновляете данные . Затем мы создаем новую серию столбцов с _calcTotal в качестве поля данных-значений и устанавливаем атрибут hidden в этой серии на true.

Теперь эту серию можно использовать для сортировки с помощью categoryAxis.sortBySeries свойство.

Однако amcharts не сортирует категории изначально, когда указанная сортировочная серия скрыта и используется много разных категорий (> ~ 15). Обходной путь - вызвать invalidateRawData, когда диаграмма запускает событие ready. Это приводит к грязной начальной анимации сортировки, но лучше, чем ничего.

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

...