На моей диаграмме у меня включена группировка данных для столбца. Серии:
series = entry.chart.series.push(new am4charts.ColumnSeries());
dateAxis.groupData = true;
dateAxis.groupCount = 40;
dateAxis.groupIntervals.setAll([
{ timeUnit: "hour", count: 1 },
{ timeUnit: "day", count: 1 },
{ timeUnit: "month", count: 1 },
{ timeUnit: "year", count: 1 },
{ timeUnit: "year", count: 10 }
]);
series.groupFields.valueY = "sum";
Это дает мне что-то вроде этого (сгруппировано по месяцам): ![enter image description here](https://i.stack.imgur.com/SQj62.png)
Должна быть возможность нажать кнопку и добиться следующего (сгруппированного по дням):
![enter image description here](https://i.stack.imgur.com/6h6n9.png)
Пока я только что написал простой метод, который должно изменить внешний вид диаграммы:
$(document).on("keypress", (e) => {
if (e.key == "2") {
graph.entries.forEach(entry => {//I have multiple charts, entry.chart is the AmCharts instance
//What to do here?
entry.chart.xAxes.values[0].groupIntervals.setAll = ([
{ timeUnit: "day", count: 1 },
]);
})
}
})
Как видите, я пытаюсь изменить groupIntervals после отрисовки всего на диаграмме. Однако это ничего не делает. Я перепробовал целый ряд функций, таких как «invalidate», «invalidateSeries», «deepInvalidate», «reinit», и ничто не делает группу диаграмм по дням, а не по месяцам.
Если я установлю groupInterval, как в этом Пример перед рендерингом графика, он работает. Однако это решение неосуществимо, так как я не могу изменить его впоследствии.
Редактировать: Я обнаружил некоторое другое странное поведение. У меня есть выпадающий список, из которого вы можете выбрать:
- Этот час
- Этот день
- На этой неделе
- В этом месяце
- В этом году
- ....
Если я выберу «этот год», все будет в порядке.
Если я выберу «этот час», потом Я выбираю «этот месяц», он будет группироваться не по дням, а по месяцам. Однако следует сгруппировать по «дням».
Если я увеличу и уменьшу масштаб, он будет выглядеть хорошо. Мне это кажется ошибкой.
Если я выберу «этот год», а потом выберу «этот месяц», он также сгруппируется по месяцам.
Кроме того, если я выберу « в этот день "или" на этой неделе ", а потом я выбираю" этот месяц ", он работает просто отлично Я не могу точно сказать, откуда происходит это поведение.
Изменение интервалов работает путем изменения моей "метки-заполнителя", которая имеет только две точки данных: начало и конец. Они устанавливаются в соответствии с выбранным периодом времени.