Avatar billede kenneth_breve Nybegynder
19. december 2007 - 13:57 Der er 3 kommentarer og
1 løsning

Linje farve i JFreeChart

Hej.

Jeg sidder og kæmper med at så tre forskellige linjer i min JFreeChart graf til at virke. Stedet hvor jeg skifter farve og laver grafen ser således ud:


        XYSeries series1 = new XYSeries("Modul 1.2");
        series1.add(20.0, 23.0);
        series1.add(40.0, 25.0);
        series1.add(70.0, 35.0);
        XYDataset Dataset1 = new XYSeriesCollection(series1);
                 
        XYSeries series2 = new XYSeries("Modul 3.7");
        series2.add(30.0, 25.0);
        series2.add(50.0, 28.0);
        series2.add(60.0, 30.0);
        XYDataset Dataset2 = new XYSeriesCollection(series2);
                 
        XYSeries series3 = new XYSeries("Modul 4.7");
        series3.add(10.0, 21.0);
        series3.add(20.0, 22.0);
        series3.add(30.0, 33.0);
        XYDataset Dataset3 = new XYSeriesCollection(series3);
                 
        JFreeChart chart = ChartFactory.createScatterPlot("Temperatur", "Dato", "Temperatur (°C)", Dataset1, PlotOrientation.VERTICAL, true, true, false);
                 
        XYPlot plot = (XYPlot) chart.getPlot();
               
        XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
                               
        plot.setRenderer(renderer);
               
                 
        renderer.setSeriesPaint(0, Color.BLACK);
        renderer.setSeriesPaint(1, Color.MAGENTA);
        renderer.setSeriesPaint(2, Color.ORANGE);
                 
        plot.setDataset(0,Dataset1);
        plot.setDataset(1,Dataset2);
        plot.setDataset(2,Dataset3);
                 
                 
        BufferedImage image = chart.createBufferedImage(570, 410);
                 
        jLabel2.setIcon(new ImageIcon(image));
Avatar billede kenneth_breve Nybegynder
19. december 2007 - 13:58 #1
Som det ses giver jeg hver Dataset et index (0 til 2) når de tilføjes til Plottet.

Dette index bruger jeg også til at indeksere farverne.

Men alligevel bliver farven på de tre linjer alle sorte?
Avatar billede arne_v Ekspert
20. december 2007 - 03:18 #2
Der skal lige omorganiseres lidt på den måde du henter dine serier ind i char.

Eksempel:

package december;

import java.awt.Color;
import java.awt.Dimension;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;

public class XYPlotColorDemo extends ApplicationFrame {
    public XYPlotColorDemo() {
        super("XYPlot Color Demo");
        XYSeries series1 = new XYSeries("Modul 1.2");
        series1.add(20.0, 23.0);
        series1.add(40.0, 25.0);
        series1.add(70.0, 35.0);
        XYSeries series2 = new XYSeries("Modul 3.7");
        series2.add(30.0, 25.0);
        series2.add(50.0, 28.0);
        series2.add(60.0, 30.0);
        XYSeries series3 = new XYSeries("Modul 4.7");
        series3.add(10.0, 21.0);
        series3.add(20.0, 22.0);
        series3.add(30.0, 33.0);
        XYSeriesCollection col = new XYSeriesCollection();
        col.addSeries(series1);
        col.addSeries(series2);
        col.addSeries(series3);
        JFreeChart chart = ChartFactory.createScatterPlot("Temperatur", "Dato", "Temperatur (°C)",
                                                          col, PlotOrientation.VERTICAL, true, true, false);
        XYPlot plot = chart.getXYPlot();
        XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();
        renderer.setSeriesPaint(0, Color.BLACK);
        renderer.setSeriesPaint(1, Color.MAGENTA);
        renderer.setSeriesPaint(2, Color.ORANGE);
        renderer.setLinesVisible(true);
        ChartPanel chartpan = new ChartPanel(chart);
        chartpan.setPreferredSize(new Dimension(600, 600));
        setContentPane(chartpan);
        pack();
        setVisible(true);
    }

    public static void main(String[] args) {
        new XYPlotColorDemo();
    }
}
Avatar billede kenneth_breve Nybegynder
21. december 2007 - 09:59 #3
Mange tak for hjælpen Arne :-)

Tænkte godt man skulle tilføje hele serien af dataserier til grafen samtidig. Men vidste bare ikke hvordan :-)


Smid svar...
Avatar billede arne_v Ekspert
21. december 2007 - 15:07 #4
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester