views:

792

answers:

1

I want to change the color of the "pieces" of pie in my jfreechart PieChart3D, this is the code that renders the piechart:

<% response.setContentType("image/png"); %><%@page import="org.jfree.data.general.*"%><%@page import="org.jfree.chart.*"%><%@page import="org.jfree.chart.plot.*"%><%@page import="java.awt.Color" %><%

        DefaultPieDataset ds = (DefaultPieDataset)session.getAttribute("usagePieOutputDataset");

  JFreeChart chart = ChartFactory.createPieChart3D
  (
   null,  // Title
   ds,  // Dataset
   false,  // Show legend
   false,  // Use tooltips
   false  // Configure chart to generate URLs?
  );

     chart.setBackgroundPaint(Color.WHITE);
     chart.setBorderVisible(false);

  PiePlot3D plot = ( PiePlot3D )chart.getPlot();
  plot.setDepthFactor(0.0);
  plot.setLabelGenerator(null); //null means no labels

  plot.setLabelOutlinePaint(Color.LIGHT_GRAY);
  plot.setLabelFont(new java.awt.Font("Arial",  java.awt.Font.BOLD, 10));


  ChartUtilities.writeChartAsPNG(response.getOutputStream(), chart, 150, 144);
%>

Any help is highly appreciated.

+2  A: 

The color for each section is normally populated from the plot's DrawingSupplier. You can override the defaults, though, by calling

PiePlot.setSectionPaint(Comparable key, Paint paint);

With, this though, you'll need to set each section manually. If you just want a different set of colors, it looks like you could implement DrawingSupplier.

Milan Ramaiya