Hi, I've created an XYPlot with 5 XYSeries for the dataset. I need to set a specific color to every one, I use
DeviationRenderer renderer = new DeviationRenderer(true, false);
renderer.setSeriesFillPaint(0, Color.red);
renderer.setSeriesFillPaint(1, new Color(255,170,140));
renderer.setSeriesFillPaint(2, new Color(255,170,140));
renderer.setSeriesFillPaint(3, Color.green);
renderer.setSeriesFillPaint(4, new Color(255,100,100));
but the doesn't work, the color into graph are wrong.
XYPlot colors
-
- Posts: 844
- Joined: Fri Oct 13, 2006 9:29 pm
- Location: Sunnyvale, CA
Re: XYPlot colors
Have you assigned the renderer to the plot?ssaraceni wrote:but the doesn't work, the color into graph are wrong.
Richard West
Design Engineer II
Advanced Micro Devices
Sunnyvale, CA
Design Engineer II
Advanced Micro Devices
Sunnyvale, CA
yes, with:
XYPlot plot = (XYPlot) chart.getPlot();
plot.setRenderer(renderer);
the dataset is:
XYSeries seriesProgram = new XYSeries("program");
XYSeries approxProgramP = new XYSeries("programP");
XYSeries approxProgramN = new XYSeries("programN");
XYSeries realSeries=new XYSeries("real");
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(seriesProgram);
dataset.addSeries(approxProgramP);
dataset.addSeries(approxProgramN);
dataset.addSeries(realSeries);
JFreeChart chart = ChartFactory.createXYLineChart("","SEC","BAR",dataset,
PlotOrientation.VERTICAL,false,true,false);
I add values to the series in a second moment.
Thanks.
XYPlot plot = (XYPlot) chart.getPlot();
plot.setRenderer(renderer);
the dataset is:
XYSeries seriesProgram = new XYSeries("program");
XYSeries approxProgramP = new XYSeries("programP");
XYSeries approxProgramN = new XYSeries("programN");
XYSeries realSeries=new XYSeries("real");
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(seriesProgram);
dataset.addSeries(approxProgramP);
dataset.addSeries(approxProgramN);
dataset.addSeries(realSeries);
JFreeChart chart = ChartFactory.createXYLineChart("","SEC","BAR",dataset,
PlotOrientation.VERTICAL,false,true,false);
I add values to the series in a second moment.
Thanks.
Simone
-
- JFreeChart Project Leader
- Posts: 11734
- Joined: Fri Mar 14, 2003 10:29 am
- antibot: No, of course not.
- Contact:
You should post a small self-contained demo showing the problem. Otherwise, we have to make guesses about what you might have done wrong. Richard spotted the most likely problem - that you maybe hadn't assigned the renderer to the plot. Since you say you *have* done that, the problem becomes more mysterious. Post a demo.
David Gilbert
JFreeChart Project Leader
Read my blog
Support JFree via the Github sponsorship program
JFreeChart Project Leader


I create this demo:
import java.awt.Color;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.DeviationRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class DemoGraph extends ApplicationFrame{
private XYSeries seriesProgram = new XYSeries("program");
private XYSeries approxProgramP = new XYSeries("programP");
private XYSeries approxProgramN = new XYSeries("programN");
private XYSeries realSeries=new XYSeries("real");
public DemoGraph(String title){
super(title);
setContentPane(createDemoPanel());
}
public JPanel createDemoPanel() {
JFreeChart chart = createChart();
return new ChartPanel(chart);
}
private JFreeChart createChart() {
XYSeriesCollection dataset = new XYSeriesCollection();
seriesProgram.add(0,0);
seriesProgram.add(5,5);
seriesProgram.add(10,10);
approxProgramP.add(0,1);
approxProgramP.add(5,6);
approxProgramP.add(10,11);
approxProgramN.add(0,-1);
approxProgramN.add(5,4);
approxProgramN.add(10,9);
realSeries.add(0,0.5);
realSeries.add(5,5.4);
realSeries.add(10,9.3);
dataset.addSeries(seriesProgram);
dataset.addSeries(approxProgramP);
dataset.addSeries(approxProgramN);
dataset.addSeries(realSeries);
JFreeChart chart = ChartFactory.createXYLineChart("","SEC","BAR",dataset,
PlotOrientation.VERTICAL,false,true,false);
XYPlot plot = (XYPlot) chart.getPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setRangeGridlinePaint(Color.white);
DeviationRenderer renderer = new DeviationRenderer(true, false);
renderer.setSeriesFillPaint(0, Color.red);
renderer.setSeriesFillPaint(1, new Color(255,170,140));
renderer.setSeriesFillPaint(2, new Color(255,170,140));
renderer.setSeriesFillPaint(3, Color.green);
plot.setRenderer(renderer);
plot.setDomainCrosshairVisible(true);
plot.setRangeCrosshairVisible(true);
NumberAxis yAxis = (NumberAxis) plot.getRangeAxis();
yAxis.setAutoRangeIncludesZero(false);
return chart;
}
public static void main(String[] args) {
DemoGraph demo=new DemoGraph("Plot color");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
}
and the result is:
seriesProgram -> yellow
approxProgramP -> green
approxProgramN -> blue
realSeries -> red
import java.awt.Color;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.DeviationRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class DemoGraph extends ApplicationFrame{
private XYSeries seriesProgram = new XYSeries("program");
private XYSeries approxProgramP = new XYSeries("programP");
private XYSeries approxProgramN = new XYSeries("programN");
private XYSeries realSeries=new XYSeries("real");
public DemoGraph(String title){
super(title);
setContentPane(createDemoPanel());
}
public JPanel createDemoPanel() {
JFreeChart chart = createChart();
return new ChartPanel(chart);
}
private JFreeChart createChart() {
XYSeriesCollection dataset = new XYSeriesCollection();
seriesProgram.add(0,0);
seriesProgram.add(5,5);
seriesProgram.add(10,10);
approxProgramP.add(0,1);
approxProgramP.add(5,6);
approxProgramP.add(10,11);
approxProgramN.add(0,-1);
approxProgramN.add(5,4);
approxProgramN.add(10,9);
realSeries.add(0,0.5);
realSeries.add(5,5.4);
realSeries.add(10,9.3);
dataset.addSeries(seriesProgram);
dataset.addSeries(approxProgramP);
dataset.addSeries(approxProgramN);
dataset.addSeries(realSeries);
JFreeChart chart = ChartFactory.createXYLineChart("","SEC","BAR",dataset,
PlotOrientation.VERTICAL,false,true,false);
XYPlot plot = (XYPlot) chart.getPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setRangeGridlinePaint(Color.white);
DeviationRenderer renderer = new DeviationRenderer(true, false);
renderer.setSeriesFillPaint(0, Color.red);
renderer.setSeriesFillPaint(1, new Color(255,170,140));
renderer.setSeriesFillPaint(2, new Color(255,170,140));
renderer.setSeriesFillPaint(3, Color.green);
plot.setRenderer(renderer);
plot.setDomainCrosshairVisible(true);
plot.setRangeCrosshairVisible(true);
NumberAxis yAxis = (NumberAxis) plot.getRangeAxis();
yAxis.setAutoRangeIncludesZero(false);
return chart;
}
public static void main(String[] args) {
DemoGraph demo=new DemoGraph("Plot color");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
}
and the result is:
seriesProgram -> yellow
approxProgramP -> green
approxProgramN -> blue
realSeries -> red
Simone
-
- JFreeChart Project Leader
- Posts: 11734
- Joined: Fri Mar 14, 2003 10:29 am
- antibot: No, of course not.
- Contact:
Thanks for the demo code. You should do two things:
(1) Use setSeriesPaint() instead of setSeriesFillPaint();
(2) Ask yourself why you are using DeviationRenderer instead of XYLineAndShapeRenderer.
(1) Use setSeriesPaint() instead of setSeriesFillPaint();
(2) Ask yourself why you are using DeviationRenderer instead of XYLineAndShapeRenderer.
David Gilbert
JFreeChart Project Leader
Read my blog
Support JFree via the Github sponsorship program
JFreeChart Project Leader

