Jfreechart中条形图的宽度

18

有没有一种方法可以调整条形图中的条形宽度?

我使用以下代码创建我的图表。

final JFreeChart chart = ChartFactory.createBarChart("Report", // chart title
                "Date", // domain axis label
                "Number", // range axis label
                dataset, // data
                PlotOrientation.VERTICAL, // orientation
                true, // include legend
                true, // tooltips?
                false // URLs?
                );  
4个回答

24

您还可以设置柱状图的最大宽度。如果您有一个宽敞的图表,但偶尔只有一两个数据点,并且您不希望一个单独的粗大柱状条占据整个区域,则此功能非常有用。

CategoryPlot categoryPlot = chart.getCategoryPlot();
BarRenderer br = (BarRenderer) categoryPlot.getRenderer();
br.setMaximumBarWidth(.35); // set maximum width to 35% of chart

10

您无法直接指定条形图的宽度,但是有一些属性可以更改,这些属性会影响宽度。您应该查看由CategoryAxis定义的lowerMarginupperMargincategoryMargin属性,或者BarRenderer中的itemMargin属性。

例如:

    BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer();
    renderer.setItemMargin(.1);

setItemMargin(double percent)中的double是指类别轴整体长度的百分比,用于同一类别内的柱状间隔(默认为0.2或20%)。该值越小,柱状图就越大。


9

在使用正边距和0时未获得结果后,我尝试使用负数的itemMargin来查看会发生什么。柱子开始变得更厚。不过我不知道这是否推荐,因为如果可用空间不足,则会出现重叠。

BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer();
renderer.setItemMargin(-2);

太棒了。我又遇到了同样的问题,使用 setMaximumBarWidth 也没有取得任何成果,但这个方法解决了我的问题。谢谢。 - Buffalo

5

根据JFreeChart项目领导Dave Gilbert的说法:

条形图的宽度会自动计算,取决于图表或绘图区域的宽度以及数据集中项目的数量。

请参见此处的讨论。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接