Change the Category Color of a barchart

A discussion forum for JFreeChart (a 2D chart library for the Java platform).
Locked
olli4u
Posts: 6
Joined: Fri Jun 10, 2005 4:04 pm

Change the Category Color of a barchart

Post by olli4u » Fri Jun 10, 2005 4:08 pm

Hello!

How to change the Color of the specific bars within a category?

plot.getRenderer().setSeriesPaint does not work for the category, but for the series.

I would like to define different series to each category

Thx
Olli

padhu
Posts: 7
Joined: Tue Jun 07, 2005 8:31 pm

Post by padhu » Fri Jun 10, 2005 8:53 pm

I created only one category, added all the tasks, created a custom bar renderer ( which set a color based on the item label ) and set this renderer to the plot.

Here is the sample code for the renderer ( adapt this code to BarRenderer ):

Code: Select all


import org.jfree.chart.renderer.category.*; 
import java.awt.*; 
import org.jfree.chart.renderer.category.*; 
import java.awt.geom.*; 
import org.jfree.chart.plot.*; 
import org.jfree.chart.axis.*; 
import org.jfree.data.gantt.*; 

public class CustomRenderer extends GanttRenderer { 

  public CustomRenderer() { 
  } 

  protected void drawTask(Graphics2D g2, 
                          CategoryItemRendererState state, 
                          Rectangle2D dataArea, 
                          CategoryPlot plot, 
                          CategoryAxis domainAxis, 
                          ValueAxis rangeAxis, 
                          GanttCategoryDataset dataset, 
                          int row, 
                          int column) { 
    setColor(g2, dataset, row, column); 
    super.drawTask(g2, state, dataArea, plot, domainAxis, rangeAxis, dataset, row, column); 
  } 

  protected void drawTasks(Graphics2D g2, 
                           CategoryItemRendererState state, 
                           Rectangle2D dataArea, 
                           CategoryPlot plot, 
                           CategoryAxis domainAxis, 
                           ValueAxis rangeAxis, 
                           GanttCategoryDataset dataset, 
                           int row, 
                           int column) { 
    setColor(g2, dataset, row, column); 
    super.drawTasks(g2, state, dataArea, plot, domainAxis, rangeAxis, dataset, row, column); 
  } 

  private void setColor(Graphics2D g2, 
                           GanttCategoryDataset dataset, int row, int column) { 

       String str = (String)dataset.getColumnKey(column); 
       if ( str.equals("Task 1") ) 
         setSeriesPaint(0, Color.blue); 
       else 
         setSeriesPaint(0, Color.green); 
  } 

} 

 

-- pady

simul

Post by simul » Tue Jun 28, 2005 7:11 am

CategoryItemRenderer categoryitemrenderer = categoryplot.getRenderer();
categoryitemrenderer.setSeriesPaint(0, Color.blue);

Locked