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

4 回答 4

24

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

CategoryPlot categoryPlot = chart.getCategoryPlot();
BarRenderer br = (BarRenderer) categoryPlot.getRenderer();
br.setMaximumBarWidth(.35); // set maximum width to 35% of chart
于 2009-12-31T14:05:13.433 回答
9

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

例如:

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

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

于 2009-12-29T12:05:25.377 回答
9

在使用正边距和零没有得到任何结果后,我尝试使用负数itemMargin来查看会发生什么。钢筋开始变粗。不过,我不知道这是否被推荐,因为如果没有足够的可用空间,你会得到重叠。

BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer();
renderer.setItemMargin(-2);
于 2010-06-15T01:54:26.157 回答
5

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

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

请参阅此处的讨论。

于 2009-12-29T10:45:52.040 回答