我遇到了条形图组件的一些奇怪行为。我正在尝试创建两个 chartSeries 并将它们添加到 CartesianChartModel。图表系列由月份和每个月的数字组成。但是由于某种原因,来自第二个循环的值被放置在错误的位置。
CartesianChartModel categoryModel = new CartesianChartModel();
ChartSeries problems = new ChartSeries();
ChartSeries incidents = new ChartSeries();
problems.setLabel("PM");
incidents.setLabel("IM");
List<MonthCountWrapper> monthCountList = //get data
List<MonthCountWrapper> monthCountListInc = //get data
for (MonthCountWrapper mcw : monthCountListInc) {
System.out.println("Month : " + mcw.getMonth());
incidents.set(mcw.getMonth(), mcw.getCount());
}
categoryModel.addSeries(incidents);
for (MonthCountWrapper mcw : monthCountList) {
System.out.println("Month : " + mcw.getMonth());
problems.set(mcw.getMonth(), mcw.getCount());
}
categoryModel.addSeries(problems);
view.setCategoryModel(categoryModel);
XHTML:
<p:barChart id="basic" value="#{statisticLateView.categoryModel}"
legendPosition="ne" diameter="600"
rendered="#{statisticLateView.categoryModel.series.size() != 0 and statisticLateView.showBarChart}"
min="0" max="150" showDataTip="true" />
第一个 sysout 生成这个:
13:20:08,345 INFO [STDOUT] Month : Januar
13:20:08,345 INFO [STDOUT] Month : Februar
13:20:08,345 INFO [STDOUT] Month : Marts
13:20:08,345 INFO [STDOUT] Month : April
13:20:08,345 INFO [STDOUT] Month : Maj
13:20:08,345 INFO [STDOUT] Month : Juni
13:20:08,345 INFO [STDOUT] Month : Juli
13:20:08,345 INFO [STDOUT] Month : August
13:20:08,345 INFO [STDOUT] Month : September
13:20:08,345 INFO [STDOUT] Month : Oktober
第二个这个
13:20:08,345 INFO [STDOUT] Month : September
13:20:08,345 INFO [STDOUT] Month : Oktober
但我的图表看起来像这样:
为什么将 october 和 september beeing 的值放在前 2 列中以及如何解决此问题?
PS。如果我更改 for 循环的顺序,则只有 10 月和 9 月的统计数据会出现在图表上,它会跳过其他月份。