JFreeChart - Line Shapes

Status
Nicht offen für weitere Antworten.

LukeVlbg

Aktives Mitglied
Ich arbeite gerade an einem LineChart. Dort kann man angeben, ob man eine Figur (Shape) für eine Linie haben möchte oder nicht.
Meine Frage: Ist es möglich genau anzugeben welche Linie welche Figur bekommen soll?

Danke für eure Hilfe.
Luke
 
S

SlaterB

Gast
gibt es denn mehrere Linien? wie meinst du das?
setSeriesShape() für verschiedene Serien im DataSet?
 

LukeVlbg

Aktives Mitglied
Hab ganz vergessen das Bild anzuhängen.
Es bestehen mehrere Linien, genau. Und jetzt möchte ich z.b. sagen die erste Linie soll Quadrate darstellen, die zweite Kreise, usw.

Was übergebe ich der Methode setSeriesShape(). Der erste Parameter ist ein int - also welche Serie und der zweite Parameter müsste Shape sein. Allerdings kann ich nicht direkt new Shape() übergeben..
 
S

SlaterB

Gast
na das war nun noch keine Suche,
aber 'All Known Implementing Classes:' führt von dort aus weiter
 

LukeVlbg

Aktives Mitglied
Hab ich zwar zuvor auch schon angeschaut aber gut, ich wollte jetzt mal ein Viereck hinzufügen. Der folgende Code:
Code:
renderer.setSeriesShape(0, new Rectangle());
macht aber noch nicht ganz was er soll. Es kommen zwar Vierecke aber leider an der falschen Stelle.
Ich wollte ja beim Datensatz mit dem Index 0 und nicht 1.
 
S

SlaterB

Gast
in einem Code-Beispiel könnte ich nachschauen,
in dem Bild sind so viele verschiedene Formen, da kann man leicht vermuten, dass das Rectangle bei 1 der Standard ist und dein Befehl keine Wirklung hat weil wer weiß wo eingebaut
 

LukeVlbg

Aktives Mitglied
Aso, klar:

Java:
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Rectangle;
import java.awt.Shape;
import java.io.File;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
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.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.util.ShapeUtilities;

public class LineChart extends ApplicationFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public LineChart(final String title) {
		super(title);

        final XYDataset dataset = createDataset();
        final JFreeChart chart = createChart(dataset);
        final ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
        setContentPane(chartPanel);
	}

	 /**
     * Creates a sample dataset.
     * 
     * @return a sample dataset.
     */
    private XYDataset createDataset() {
        
        final XYSeries series1 = new XYSeries("First");
        series1.add(1.0, 1.0);
        series1.add(2.0, 4.0);
        series1.add(3.0, 3.0);
        series1.add(4.0, 5.0);
        series1.add(5.0, 5.0);
        series1.add(6.0, 7.0);
        series1.add(7.0, 7.0);
        series1.add(8.0, 8.0);

        final XYSeries series2 = new XYSeries("Second");
        series2.add(1.0, 5.0);
        series2.add(2.0, 7.0);
        series2.add(3.0, 6.0);
        series2.add(4.0, 8.0);
        series2.add(5.0, 4.0);
        series2.add(6.0, 4.0);
        series2.add(7.0, 2.0);
        series2.add(8.0, 1.0);
        
        

        final XYSeries series3 = new XYSeries("Third");
        series3.add(3.0, 4.0);
        series3.add(4.0, 3.0);
        series3.add(5.0, 2.0);
        series3.add(6.0, 3.0);
        series3.add(7.0, 6.0);
        series3.add(8.0, 3.0);
        series3.add(9.0, 4.0);
        series3.add(10.0, 3.0);
        
        final XYSeries series4 = new XYSeries("Fourth");
        series4.add(3.0, 4.0);
        series4.add(2.0, 3.0);
        series4.add(5.0, 4.0);
        series4.add(8.0, 3.0);
        series4.add(7.0, 6.0);
        series4.add(8.0, 3.0);
        series4.add(1.0, 3.0);
        series4.add(5.0, 3.0);

        final XYSeries series5 = new XYSeries("Fifth");
        series5.add(2.0, 4.0);
        series5.add(2.0, 3.0);
        series5.add(4.0, 4.0);
        series5.add(6.0, 3.0);
        series5.add(7.0, 6.0);
        series5.add(8.0, 2.0);
        series5.add(2.0, 3.0);
        series5.add(6.0, 1.0);
        
        final XYSeries series6 = new XYSeries("Sixth");
        series6.add(3.0, 4.0);
        series6.add(4.0, 3.0);
        series6.add(5.0, 2.0);
        series6.add(6.0, 3.0);
        series6.add(7.0, 6.0);
        series6.add(8.0, 3.0);
        series6.add(9.0, 4.0);
        series6.add(10.0, 3.0);
        
        
        final XYSeries series7 = new XYSeries("Seventh");
        series7.add(1.0, 5.0);
        series7.add(2.0, 7.0);
        series7.add(3.0, 6.0);
        series7.add(4.0, 8.0);
        series7.add(5.0, 4.0);
        series7.add(6.0, 4.0);
        series7.add(7.0, 2.0);
        series7.add(8.0, 1.0);
        
        final XYSeries series8 = new XYSeries("Eighth");
        series8.add(3.0, 1.0);
        series8.add(2.0, 7.0);
        series8.add(3.0, 3.0);
        series8.add(5.0, 5.0);
        series8.add(2.0, 4.0);
        series8.add(6.0, 7.0);
        series8.add(7.0, 7.0);
        series8.add(3.0, 8.0);
        
        final XYSeriesCollection dataset = new XYSeriesCollection();
        dataset.addSeries(series1);
        dataset.addSeries(series2);
        dataset.addSeries(series3);
        dataset.addSeries(series4);
        dataset.addSeries(series5);
        dataset.addSeries(series6);
        dataset.addSeries(series7);
        dataset.addSeries(series8);
                
        return dataset;
        
    }
    
    /**
     * Creates a chart.
     * 
     * @param dataset  the data for the chart.
     * 
     * @return a chart.
     */
    private JFreeChart createChart(final XYDataset dataset) {
        
        // create the chart...
        final JFreeChart chart = ChartFactory.createXYLineChart(
            "Linien Chart",      // chart title
            "X",                      // x axis label
            "Y",                      // y axis label
            dataset,                  // data
            PlotOrientation.VERTICAL,
            true,                     // include legend
            true,                     // tooltips
            false                     // urls
        );

        // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...
        chart.setBackgroundPaint(Color.white);

//        final StandardLegend legend = (StandardLegend) chart.getLegend();
//        legend.setDisplaySeriesShapes(true);
        
        // get a reference to the plot for further customisation...
        final XYPlot plot = chart.getXYPlot();
        plot.setBackgroundPaint(Color.white);
//        plot.setAxisOffset(new Spacer(Spacer.ABSOLUTE, 5.0, 5.0, 5.0, 5.0));
        
        // Gitterlinien schwarz färben
        plot.setDomainGridlinePaint(Color.black);
        plot.setRangeGridlinePaint(Color.black);
        plot.setOutlinePaint(Color.black);
        plot.setDomainGridlinesVisible(false);
        plot.setRangeGridlinesVisible(false);
        
        final XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
//        renderer.setSeriesLinesVisible(0, true);
        renderer.setSeriesShapesVisible(0, true);
        renderer.setSeriesShape(0, new Rectangle());
//        renderer.setSeriesShapesFilled(0, false); // Markierungen bei Punkten hohl oder voll
        plot.setRenderer(renderer);
        
        // Linienstärke ändern
        plot.getRenderer().setSeriesStroke(0, new BasicStroke(2));
//        plot.getRenderer().setSeriesStroke(1, new BasicStroke(5));

        // change the auto tick unit selection to integer units only...
        final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

        return chart;
        
    }

    public static void main(final String[] args) {

        final LineChart demo = new LineChart("Linien Chart");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);

    }
}
 
S

SlaterB

Gast
shit, gesehen und dann vergessen wegen anderen Threads, kommt aber bald dran ;)
 
S

SlaterB

Gast
new Rectangle() bringt wenig, ist nicht sichtbar,
new Rectangle(10,10) macht schon dickere Klötze,

und wie vermutet werden die anderen Shapes automatisch erstellt, vergleiche das Bild mit einer Chart, wenn du kein eigenes Shape setzt,
warum und wo das passiert ist mal wieder etwas, was ich an JFreeChart lieber ganz ignoriere,
setze für alle Serien die Shapes die du haben möchtest, dann ist das eh egal
 

LukeVlbg

Aktives Mitglied
Das mit Rectangle funktioniert super, danke.
Aber was ich nicht ganz checke ist, wo Circle oder Triangle liegen. Das sind doch die offensichlichsten Shapes. Oder kann es sein, dass z.B. Ellipse2D ein Kreis ist?
 

LukeVlbg

Aktives Mitglied
Hm, eine Ellipse ist doch ein bisschen was anderes als ein Kreis: Ellipse - Wiki

Dachte ich zumindest. Aber scheint hier ein Kreis zu sein, wenn ich es mit den Parametern nicht zu weit Strecke.
Werd mir in dem Fall die anderen noch anschauen. Bin ja gespannt was ein Dreieck sein soll..
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L JFreeChart StackedBar + Line-Chart kombinieren AWT, Swing, JavaFX & SWT 4
C JFreeChart X-Achse Werte skalieren, begrenzen, zoomen AWT, Swing, JavaFX & SWT 5
H JFreeChart BarDiagramm Balken der gleichen Serie unterschiedliche Farbe zuordnen AWT, Swing, JavaFX & SWT 2
H JFreeChart - DemoDataSetFactory Probleme AWT, Swing, JavaFX & SWT 1
H JFreeChart Charts überlagern AWT, Swing, JavaFX & SWT 2
C JFreeChart x-Achse mit absteigenden Werten AWT, Swing, JavaFX & SWT 1
K JFreeChart nicht ohne BarChartDemo startklar? AWT, Swing, JavaFX & SWT 5
T 2D-Grafik JFreeChart mehrere Y-Achsen AWT, Swing, JavaFX & SWT 2
D Swing JFreeChart Crosshair Label - setPreferredSize oder ähnliches, aber wo ? AWT, Swing, JavaFX & SWT 1
N jFreeChart einzelne Punkte anwählen und Formatieren AWT, Swing, JavaFX & SWT 0
B JFreeChart Gantt Höhe Tasks AWT, Swing, JavaFX & SWT 1
V JFreeChart: Tooltip auf Knopfdruck anzeigen AWT, Swing, JavaFX & SWT 2
V JFreechart: In Linechart Linien einzeichnen und Bereiche färben AWT, Swing, JavaFX & SWT 4
M In JFreeChart Geraden erzeugen AWT, Swing, JavaFX & SWT 11
M JFreechart Zoom out AWT, Swing, JavaFX & SWT 2
M Swing JFreechart X-Achse Tick auslesen AWT, Swing, JavaFX & SWT 13
M Swing JFreechart zoom x-achse neue Werte AWT, Swing, JavaFX & SWT 4
M JFreeChart neu zeichnen sich Wenn Jtable sich ändert AWT, Swing, JavaFX & SWT 5
Z Diagramm mit jfreechart quadratisch erstellen AWT, Swing, JavaFX & SWT 1
D JFreeChart range der Y Achse verändern. AWT, Swing, JavaFX & SWT 1
G JFreeChart - SetSeriesColor Problem AWT, Swing, JavaFX & SWT 3
K 2D-Grafik JFreeChart plot.setBackgroundImage() AWT, Swing, JavaFX & SWT 1
K 2D-Grafik JFreeChart DateAxis AWT, Swing, JavaFX & SWT 9
T Event Handling JFreeChart Update AWT, Swing, JavaFX & SWT 2
A JFreeChart BarChart invertierte anzeige oder werte bereich von-bis AWT, Swing, JavaFX & SWT 4
Farbtopf Live update JFreeChart AWT, Swing, JavaFX & SWT 3
H Swing JfreeChart aktualisieren - mit daten aus thread AWT, Swing, JavaFX & SWT 3
D JFreeChart - aktuelle code beispiele AWT, Swing, JavaFX & SWT 11
M JFreeChart in ein File schreiben (bzw. JFrame in ein File Schreiben) AWT, Swing, JavaFX & SWT 2
A JFreeChart in GUI AWT, Swing, JavaFX & SWT 3
E JFreeChart: Timeseries-Chart und Area-Chart "überlappen" lassen AWT, Swing, JavaFX & SWT 6
B JFreeChart-Erweiterungen AWT, Swing, JavaFX & SWT 4
E JFreeChart in einer dynamischen Aufzeichnung neue Serien hinzufügen? AWT, Swing, JavaFX & SWT 7
I XML - JFreeChart AWT, Swing, JavaFX & SWT 15
N Dynamische JFreechart updated UI nicht AWT, Swing, JavaFX & SWT 5
S JFreeChart - Schriftgröße der Legende AWT, Swing, JavaFX & SWT 2
O Swing JFreechart subtitle formatieren AWT, Swing, JavaFX & SWT 3
N JFreeChart: Plot soll mit skalieren AWT, Swing, JavaFX & SWT 5
R JFreeChart Plots AWT, Swing, JavaFX & SWT 6
J JFreechart spezielles Balkendiagramm AWT, Swing, JavaFX & SWT 2
R JFreeChart: nur jeden n-ten Wert auf der X-Achse anzeigen AWT, Swing, JavaFX & SWT 5
R JFreeChart aktualisieren wenn sich die Ausgangsdaten ändern AWT, Swing, JavaFX & SWT 8
T JFreeChart Linine einzeichnen AWT, Swing, JavaFX & SWT 2
M JFreeChart Ausrichtung der Balken AWT, Swing, JavaFX & SWT 2
R jFreeChart in eine NetBeans Projekt integrieren AWT, Swing, JavaFX & SWT 24
D JFreeChart Breite (width) ändern AWT, Swing, JavaFX & SWT 6
A Swing JFreeChart, Gantt, Schichtplan AWT, Swing, JavaFX & SWT 3
R JFreeChart Skalierung zur Laufzeit ändern AWT, Swing, JavaFX & SWT 7
F Wie lade ich eine CategoryDataset aus XML ins JFreeChart? AWT, Swing, JavaFX & SWT 9
J JFreeChart - mehrere Y-Achsen AWT, Swing, JavaFX & SWT 2
A JFreeChart: 2 X-Achsen für ein Dataset AWT, Swing, JavaFX & SWT 2
T JFreeChart export Problem AWT, Swing, JavaFX & SWT 4
S JFreeChart Achse immer sichtbar AWT, Swing, JavaFX & SWT 2
D JFreechart maximalangezeigter Wertebereich AWT, Swing, JavaFX & SWT 3
B AWT [JFreeChart] malt nicht so wie ich will :-( AWT, Swing, JavaFX & SWT 2
B JFreeChart Balkendiagramm ActionEvent AWT, Swing, JavaFX & SWT 2
L Labels sichtbar - JFreeChart AWT, Swing, JavaFX & SWT 5
A Schachbrettartiges Diagramm mit JFreeChart AWT, Swing, JavaFX & SWT 4
E JFreeChart AWT, Swing, JavaFX & SWT 2
L Gantt Chart - JFreeChart AWT, Swing, JavaFX & SWT 5
K JFreeChart im JScrollPane ausblenden AWT, Swing, JavaFX & SWT 2
L JFreeChart Labelrotation AWT, Swing, JavaFX & SWT 2
L JFreeChart Farbe von Balken AWT, Swing, JavaFX & SWT 5
L JFreeChart Balkenanordnung AWT, Swing, JavaFX & SWT 10
L JFreeChart Achsenskalierung AWT, Swing, JavaFX & SWT 4
L JFreeChart - Dataset befüllen AWT, Swing, JavaFX & SWT 2
N JFreeChart - Basics AWT, Swing, JavaFX & SWT 2
L NullPointerException JFreeChart AWT, Swing, JavaFX & SWT 10
L JFreeChart - Legende vertikal AWT, Swing, JavaFX & SWT 5
L JFreeChart - Linienstärke einstellen AWT, Swing, JavaFX & SWT 2
L JFreeChart Einstellungen AWT, Swing, JavaFX & SWT 22
L JFreeChart - Gitterfarbe schwarz AWT, Swing, JavaFX & SWT 4
L JFreeChart - Performance bei PNG-Erstellung AWT, Swing, JavaFX & SWT 5
L JFreeChart - Legende beliebig positionieren AWT, Swing, JavaFX & SWT 16
G JFreechart Balken einfärben AWT, Swing, JavaFX & SWT 6
F Probleme mit NumberAxis bei JFreeChart AWT, Swing, JavaFX & SWT 5
G jfreechart (Diagramm speichern mit ein vorgegebenen Namen) AWT, Swing, JavaFX & SWT 6
S JFreeChart neu zeichnen sich das Datenset geändert hat. AWT, Swing, JavaFX & SWT 4
K JFreeChart Eigentschaften des Charts ändern AWT, Swing, JavaFX & SWT 8
G JFreeChart und das updaten AWT, Swing, JavaFX & SWT 7
G Ausser Jfreechart, Chart Programme? AWT, Swing, JavaFX & SWT 11
S Dimensionen JFreeChart AWT, Swing, JavaFX & SWT 5
S JFreeChart Stufendiagramm AWT, Swing, JavaFX & SWT 2
H Problem beim zeichen eines TimeSeriesChart mit jfreechart AWT, Swing, JavaFX & SWT 5
K JFreeChart: Platz zwischen Balken AWT, Swing, JavaFX & SWT 3
M JFreeChart Handbuch? AWT, Swing, JavaFX & SWT 8
P JFreeChart - TimeSeriesDiagram AWT, Swing, JavaFX & SWT 2
G JavaFX Line Chart mit Farbverlauf/Gradient in Linie AWT, Swing, JavaFX & SWT 1
J JavaFX Shapes (Line) erweitern AWT, Swing, JavaFX & SWT 11
K Liniendicke für Line Chart dynamisch ändern AWT, Swing, JavaFX & SWT 0
J JavaFX Länge von Line ermitteln AWT, Swing, JavaFX & SWT 9
J JavaFX Line Binding AWT, Swing, JavaFX & SWT 8
N JavaFX Erweitern der Line(Shape)-Klasse AWT, Swing, JavaFX & SWT 1
M JavaFX Line Chart Markers AWT, Swing, JavaFX & SWT 0
A Swing JTextArea - Multi-Line-Editing AWT, Swing, JavaFX & SWT 2
xehpuk Swing Line-wrapping von JTextPane (in JScrollPane) AWT, Swing, JavaFX & SWT 3
F new Line in JTextarea AWT, Swing, JavaFX & SWT 15
B Line aus Listener? AWT, Swing, JavaFX & SWT 11
KrokoDiehl Swing Design-Frage: eigenes Line-Wrapping AWT, Swing, JavaFX & SWT 5
Landei GUI über command line ändern? AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben