Reputation: 9083
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
Upvotes: 3
Views: 11111
Reputation: 205785
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);
}
}
Upvotes: 6