views:

511

answers:

2

I am trying to create a Stacked Bar Chart. My requirement is I need percentage composition inside the bar and total count on top of the Bar. Please suggest solutions.

My Requirement: Sample : http://www.jfree.org/jfreechart/api/javadoc/images/StackedBarRenderer3DSample.png

I want percentage composition inside the bar and total composition on the top of the bar.

A: 

It's not clear what you are doing now, but using a StackedBarRenderer with setRenderAsPercentages(true) will display the percentages. To get the total, extend StackedBarRenderer, loop through the dataset for each column, and override drawItem() to draw the result. An example may be found in the JFreeChart Demo as part of StackedBarChartDemo3.

As an alternative, consider a custom CategoryToolTipGenerator, added via setBaseToolTipGenerator().

Addendum: You linked to an example using StackedBarRenderer3D, which also has a setRenderAsPercentages() method. It can be extended similarly.

trashgod
Cheers mate, it worked. I extended the StackedBarRenderer and added a CategoryToolTipGenerator to it. Thanks!!!
SKR
+1  A: 

I ran into the same problem too. For some reason the latest version of JFreeChart does not display the percentage composition inside the bar. Here's how I got it to work:

    StackedBarRenderer br = new StackedBarRenderer(true); //enable perc. display
    br.setBarPainter(new StandardBarPainter());
    br.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    br.setBaseItemLabelsVisible(true);
    chart.getCategoryPlot().setRenderer(br);

Hope this helps

Shahriar