棒グラフ コンポーネントの奇妙な動作が発生しています。2 つの chartSeries を作成して、CartesianChartModel に追加しようとしています。チャート シリーズは、月と各月の数値で構成されます。しかし、何らかの理由で、2 番目のループの値が間違った位置に置かれています。
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
そして2つ目はこれ
13:20:08,345 INFO [STDOUT] Month : September
13:20:08,345 INFO [STDOUT] Month : Oktober
しかし、私のグラフは次のようになっています。
10 月と 9 月のビーイングの値が最初の 2 列に表示される理由と、この問題の解決方法を教えてください。
PS。for ループの順序を変更すると、10 月と 9 月の統計のみがグラフに表示され、他の月はスキップされます。