Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Width of the bar in Jfreechart

Is there a way to adjust the width of the bars in a Barchart?

I create my chart with the following code.

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?
                );  
like image 559
Harish Avatar asked Dec 29 '09 10:12

Harish


2 Answers

You can also set the maximum width of a bar. This is useful if you have a wide chart but occasionally there are only one or two data points and you don't want a single big fat bar taking up the whole area.

CategoryPlot categoryPlot = chart.getCategoryPlot();
BarRenderer br = (BarRenderer) categoryPlot.getRenderer();
br.setMaximumBarWidth(.35); // set maximum width to 35% of chart
like image 148
Jason Messick Avatar answered Oct 21 '22 05:10

Jason Messick


You can't directly specify the width of the bars, but there's a few attributes that can be changed which affect the width. You should take a look at the lowerMargin, upperMargin and categoryMargin attributes defined by the CategoryAxis or the itemMargin attribute in the BarRenderer.

For example:

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

The double specified in setItemMargin(double percent) is the percentage of the overall length of the category axis that will be used for the space between the bars within the same category (default is .2 or 20%). The smaller this value is, the larger the bars will be.

like image 30
Hermann Hans Avatar answered Oct 21 '22 07:10

Hermann Hans