Jfreechart中条形的宽度

时间:2009-12-29 10:28:19

标签: java jfreechart bar-chart

有没有办法调整条形图中条形的宽度?

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

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 个答案:

答案 0 :(得分:20)

您还可以设置条形的最大宽度。如果您有一个宽图表,但是偶尔只有一个或两个数据点而且您不希望一个大胖子占据整个区域,这很有用。

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

答案 1 :(得分:8)

您不能直接指定条的宽度,但有一些可以更改的属性会影响宽度。您应该查看 lowerMargin upperMargin categoryMargin 由CategoryAxis定义的属性或BarRenderer中的 itemMargin 属性。

例如:

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

setItemMargin(double percent)中指定的双精度是类别轴的总长度的百分比,该长度将用于同一类别中的条形之间的空格(默认为.2或20%)。该值越小,条形越大。

答案 2 :(得分:5)

根据Dave Gilbert(JFreeChart项目负责人)的说法

  

条形宽度是自动的   计算并将取决于   图表或图表的宽度和数量   数据集中的项目。

参见讨论here

答案 3 :(得分:5)

在使用正边距和零获得无结果后,我尝试使用itemMargin的负数来查看会发生什么。酒吧开始越来越厚。不过,我不知道是否推荐这样做,因为如果没有足够的可用空间,你会得到重叠。

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