我有堆积条形图,其中列数是动态的,可以从1列更改为n列。我希望图表和条形宽度之间的间距保持一致。我如何解决它。请提出解决方案/想法。
答案 0 :(得分:4)
在堆积条形图中,您可以使用
更改条形之间的间距代码低于
protected JFreeChart generateGraph() {
CategoryAxis categoryAxis = new CategoryAxis("Categories");
categoryAxis.setLowerMargin(.01);
categoryAxis.setCategoryMargin(.01);
categoryAxis.setUpperMargin(.01);
categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
ValueAxis valueAxis = new NumberAxis("Values");
StackedBarRenderer renderer = new StackedBarRenderer();
renderer.setBarPainter(new StandardBarPainter());
renderer.setDrawBarOutline(false);
renderer.setShadowVisible(false);
renderer.setBaseItemLabelsVisible(true);
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
CategoryPlot plot = new CategoryPlot( _dataset,
categoryAxis,
valueAxis,
renderer);
plot.setOrientation(PlotOrientation.VERTICAL);
JFreeChart chart = new JFreeChart( "Title",
JFreeChart.DEFAULT_TITLE_FONT,
plot,
true);
//ChartFactory.getChartTheme().apply(_chart);
return chart;
}
答案 1 :(得分:2)
StackedBarRenderer
致力于使“条形和条形宽度之间的间距保持一致”。当列数发生变化时,您不希望它以不同的方式做什么。相关几何由父BarRenderer
以calculateBarWidth()
等方法确定,可以根据需要覆盖。另外,请确认每个系列中的每个类别都有值。