Jfreechart中条形的宽度
有没有办法调整条形图中条形的宽度?
我使用以下代码创建我的图表。
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? );
您还可以设置条形的最大宽度。 如果您有一个宽图表,但是偶尔只有一个或两个数据点,并且您不希望单个大胖子占据整个区域,这将非常有用。
CategoryPlot categoryPlot = chart.getCategoryPlot(); BarRenderer br = (BarRenderer) categoryPlot.getRenderer(); br.setMaximumBarWidth(.35); // set maximum width to 35% of chart
您不能直接指定条的宽度,但有一些可以更改的属性会影响宽度。 您应该查看由CategoryAxis定义的lowerMargin , upperMargin和categoryMargin属性或BarRenderer中的itemMargin属性。
例如:
BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer(); renderer.setItemMargin(.1);
setItemMargin(double percent)
指定的setItemMargin(double percent)
是类别轴的总长度的百分比,该长度将用于同一类别中的条之间的空格(默认为.2或20%)。 该值越小,条形越大。
根据Dave Gilbert(JFreeChart项目负责人)的说法
条形宽度将自动计算,并取决于图表或绘图宽度以及数据集中的项目数。
请参阅此处的讨论。
在使用正边距和零获得无结果后,我尝试使用itemMargin
来查看会发生什么。 酒吧开始越来越厚。 不过,我不知道是否推荐,因为如果没有足够的可用空间,你会得到重叠。
BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer(); renderer.setItemMargin(-2);