views:

248

answers:

1

Hi,

I need to set a unique color to each bar in the stacked bar chart. Whatever the color I see in one bar it shouldn't be repeated in any other bar or any other stack.

For example: I have 5 bars in the report. Each bar has 3 different stacks. I want to apply a red related colors to the first bar and its stacks. Second bar should have blue related colors. etc.. It is showed in the attached image. The image shows a very basic requirement what we want. Just created using a normal ms paint. Stacked Bar MS Paint Image

+1  A: 

You can override the getItemPaint() method of StackedBarRenderer() to return the desired color. You can use getHSBColor() to construct related colors by varying the brightness or saturation for a given hue.

Addendum: The example below will print out the row, column and color for each item. You can use the result as a guide to which custom color you want to return. See BarChartDemo1 for a sample dataset.

plot.setRenderer(new MySBRenderer());
...
private static class MySBRenderer extends StackedBarRenderer {

    @Override
    public Paint getItemPaint(int row, int col) {
        System.out.println(row + " " + col + " " + super.getItemPaint(row, col));
        return super.getItemPaint(row, col);
    }
}
trashgod
Thank you very much for your answer. I am sorry if I have not conveyed the requirement properly. Here are some more inputs:1. The stacked bar should have only 3 bars. Each bar has 3 stacks.2. All the stack colors should be unique. Each bar and stack represents unique parameters.The problem with the stacked bar chart is each stack in the bar is same across all the bars. Where as my requirement says each stack and each bar are different.The parameter for first stack in the first bar is different from that of first stack in the second and third bars.
Multiplexer
@Purushotham: I've elaborated above.
trashgod
@Trashgod: Excellent. It worked. Thank you very much.
Multiplexer