問題を解決するために GroupedStackedBarRenderer を使用して StackedBarChart を作成しましたhttps://stackoverflow.com/questions/18349933/how-to-create-a-stacked-bar-chart-with-multiple-rows-inside-one-row。
列キーと行キー、グループをいくつでも持つことができます。以下に、プログラムのスクリーンショットをいくつか添付しました。問題は、標準ビューを取得できなかったことです (バー間のスペース、入力が少ない場合はバーが大きすぎる、内部に書かれたテキストが表示されないバーが細すぎる)。このユースケースを実装する前に、setMaxbarWidthを使用しますが、今は機能しません。
バーを配置するために使用するコードは次のとおりです。
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundPaint(Color.WHITE);
chart.setBackgroundPaint(new Color(238, 238, 238));
GroupedStackedBarRenderer renderer = new GroupedStackedBarRenderer();
//Some insertion here
KeyToGroupMap map = new KeyToGroupMap("A");
renderer.setSeriesToGroupMap(map);
renderer.setItemMargin(0.0);
/** causes to show bar width half of available space. */
renderer.setMaximumBarWidth(.5);
renderer.setDrawBarOutline(true);
renderer.setShadowVisible(false);
plot.setRenderer(renderer);
/** get number axis in plot.Number related axis .x axis in this graph. */
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
renderer.setBaseToolTipGenerator(new CustomToolTipGenerator(getGraphData()));
renderer.setBarPainter(new StandardBarPainter());
/** do not show thick in number axis label */
rangeAxis.setTickLabelsVisible(false);
rangeAxis.setTickMarksVisible(false);
rangeAxis.setAxisLineVisible(false);
CategoryAxis categoryAxis = plot.getDomainAxis();
categoryAxis.setCategoryMargin(0.05);
// categoryAxis.setLowerMargin(0.05);
// categoryAxis.setUpperMargin(0.05);
categoryAxis.setTickLabelsVisible(false);
categoryAxis.setTickMarksVisible(false);
categoryAxis.setAxisLineVisible(false);
CategoryDomain にはいくつかのメソッド (setlowerMargin、setCategoryMargin、setUpperMargin) があることを知っています。これらのメソッドをいくつか試してみましたが、成功しませんでした。なぜ棒と棒の間がこんなに広いのか理解できませんでした。助けてください
3列キーと6グループの画像
2列キーと4グループの画像
1 つの列キーと 2 つのグループの画像