修复StackedbarChart中条形图宽度和条形间距,以获得任意数量的输入

时间:2013-08-22 10:31:47

标签: java jfreechart

我使用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组

的图片

enter image description here 图片有2列密钥和4组

enter image description here

带有一列键和2组的图片

enter image description here

2 个答案:

答案 0 :(得分:1)

您可能希望在setItemMargin()中探索更多的负范围,如here所示。您可以调整滑块以查找数据集的最佳值。在下图中,初始设置为SLIDER_INITIAL_VALUE * INCREMENT,即–4.2

image

答案 1 :(得分:0)

我明白代码有什么问题。我有一个错误的KeyToGroup map.I没有将任何行键分组到同一个groupKey内。所以我没有得到我想要的所需视图。