Swing Graph zeichnen lassen

zlFavourite

Aktives Mitglied
Hallo,
ich möchte eine Parabel in einem Koordinatensystem zeichnen lassen.
Ich bin mir nicht sicher welche die beste Methode dafür ist.
Ist dies über JFreeChart?

Danke:)
 

Tarrew

Top Contributor
Für das Plotten von einer Funktion braucht man jetzt keine extra Bibliothek.

Hier mal ein JavaFX Beispiel:
Java:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;

import java.util.function.Function;

public class GraphTest extends Application {
    @Override
    public void start(Stage stage) {
        Function<Double, Double> f = (x) -> Math.pow(x, 2);

        LineChart<Number, Number> lineChart = new LineChart<>(new NumberAxis(), new NumberAxis());
        lineChart.setCreateSymbols(false);

        double stepSize = 0.1;
        double minX = -5, maxX = 5;

        XYChart.Series<Number, Number> series = new XYChart.Series<>();
        for (double x = minX; x <= maxX; x += stepSize) {
            series.getData().add(new XYChart.Data<>(x, f.apply(x)));
        }
        lineChart.getData().add(series);

        Scene scene = new Scene(lineChart, 800, 800);
        stage.setScene(scene);
        stage.show();
    }
}

Mit Swing wird das vermutlich ähnlich schnell gehen.
 

zlFavourite

Aktives Mitglied
Für das Plotten von einer Funktion braucht man jetzt keine extra Bibliothek.

Hier mal ein JavaFX Beispiel:
Java:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;

import java.util.function.Function;

public class GraphTest extends Application {
    @Override
    public void start(Stage stage) {
        Function<Double, Double> f = (x) -> Math.pow(x, 2);

        LineChart<Number, Number> lineChart = new LineChart<>(new NumberAxis(), new NumberAxis());
        lineChart.setCreateSymbols(false);

        double stepSize = 0.1;
        double minX = -5, maxX = 5;

        XYChart.Series<Number, Number> series = new XYChart.Series<>();
        for (double x = minX; x <= maxX; x += stepSize) {
            series.getData().add(new XYChart.Data<>(x, f.apply(x)));
        }
        lineChart.getData().add(series);

        Scene scene = new Scene(lineChart, 800, 800);
        stage.setScene(scene);
        stage.show();
    }
}

Mit Swing wird das vermutlich ähnlich schnell gehen.

Danke für deine Hilfe:)
Als Anmerkung, ich arbeite mit Swing und nicht JavaFX.

Ist es hierbei aber auch möglich, dass ich das Koordinatensystem nicht vorgebe, sondern aus meinen Daten erzeuge lasse.
Sprich: Meine Werte rechne ich davor aus und speicher diese in einer ArrayList. Kann ich dann nun z.b. auch die Grenzen für das Koordinatensystem daraus entnehmen(z.B min/max Werte).
Ich möchte ja dann mit meinen Werten aus der ArrayList meine Funktion zeichnen lassen. Das sollte ebenfalls möglich sein.
 

Tarrew

Top Contributor
Plotten kannste das dann in Swing vermutlich echt am besten mit JFreeChart.
Java:
package handler;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.DefaultXYDataset;

import javax.swing.*;
import java.util.List;
import java.util.function.Function;
import java.util.stream.IntStream;

public class GraphTest extends JPanel {

    static Function<Double, Double> f = (x) -> Math.pow(x, 2);

    public static void main(String[] args) {

        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame();

            frame.setSize(800, 800);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);

            double[] xValues = IntStream.range(-50, 50).mapToDouble(i -> (double) i / 10).toArray();
            double[] yValues = Arrays.stream(xValues).map(x -> f.apply(x)).toArray();

            DefaultXYDataset ds = new DefaultXYDataset();
            ds.addSeries("Graph 1", new double[][]{xValues, yValues});

            JFreeChart chart = ChartFactory.createXYLineChart("Test-Graph",
                    "x", "y", ds, PlotOrientation.VERTICAL, true, true,
                    false);

            ChartPanel cp = new ChartPanel(chart);

            frame.getContentPane().add(cp);
        });

    }

}

Wenn du deine x- und y-Werte reinwirfst, wird das Koordinatensystem automatisch passend groß gewählt, du solltest nur auf die Sortierung der Werte achten.
 
Zuletzt bearbeitet:

zlFavourite

Aktives Mitglied
Plotten kannste das dann in Swing vermutlich echt am besten mit JFreeChart.
Java:
package handler;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.DefaultXYDataset;

import javax.swing.*;
import java.util.List;
import java.util.function.Function;
import java.util.stream.IntStream;

public class GraphTest extends JPanel {

    static Function<Double, Double> f = (x) -> Math.pow(x, 2);

    public static void main(String[] args) {

        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame();

            frame.setSize(800, 800);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);

            double[] xValues = IntStream.range(-50, 50).mapToDouble(i -> (double) i / 10).toArray();
            double[] yValues = Arrays.stream(xValues).map(x -> f.apply(x)).toArray();

            DefaultXYDataset ds = new DefaultXYDataset();
            ds.addSeries("Graph 1", new double[][]{xValues, yValues});

            JFreeChart chart = ChartFactory.createXYLineChart("Test-Graph",
                    "x", "y", ds, PlotOrientation.VERTICAL, true, true,
                    false);

            ChartPanel cp = new ChartPanel(chart);

            frame.getContentPane().add(cp);
        });

    }

}

Wenn du deine x- und y-Werte reinwirfst, wird das Koordinatensystem automatisch passend groß gewählt, du solltest nur auf die Sortierung der Werte achten.

Meine Werte sind eigentlich schon von groß nach klein in der ArrayListe. Zumindest werden sie so rein gespeichert.
Kennst du zufällig eine gute Seite wo das mit JFreeChart (in Verbindung mit ArrayListe) erklärt ist. Ich habe da nicht wirklich etwas sinnvolles gefunden.
 

Tarrew

Top Contributor
Wie sieht deine Liste mit den Werten denn aus? Von welchem Typ ist die?
Du musst deine Liste doch nur in zwei Arrays aufteilen mit den x- und y-Werten. Das hat jetzt nicht wirklich was mit JFreeChart zu tun, das sind einfach Java-Basics.
 

mihe7

Top Contributor
Meine Werte sind eigentlich schon von groß nach klein in der ArrayListe.
Die Frage ist, wie der Zusammenhang zwischen den x- und y-Koordinaten beschrieben ist. Du kannst ja eine Liste nur mit z. B. y-Koordinaten haben, dann könnte die x-Koordinate über den Listen-Index hergestellt werden (1. Eintrag in der Liste entspricht der x-Koordinate -5, 2. Eintrag der x-Koordinate -4 usw.) Umgekehrt können sich in der Liste auch Objekte befinden, die bereits Koordinatenpaare enthalten.
 
X

Xyz1

Gast
Ohne Libraries (und dazu zähle ich auch FX...) geht das mit curve fitting, AWT's Strokes und etwas "Handarbeit". Aber ich befürchte, das übersteigt deine Erfahrungen. :rolleyes:
 
X

Xyz1

Gast
Hmm, Gymi? Ihr sollt natürlich auch "dahin gebracht werden", Lösungen selbständig, ohne fremde Hilfe, aber mit "teilweisen" Vorgaben des Lehrkörpers zu erarbeiten und zu präsentieren.
Welche Themen habt ihr (letztlich(/last, but not least)) denn so behandelt...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Soloeco Graph zeichnen AWT, Swing, JavaFX & SWT 1
I Graph mit Swing zeichnen AWT, Swing, JavaFX & SWT 8
S Graph zeichnen bei Mausklick AWT, Swing, JavaFX & SWT 4
D Canvas oder scene graph? AWT, Swing, JavaFX & SWT 16
ralfb1105 Swing Dynamischer Graph zum anzeigen Perfomance Daten AWT, Swing, JavaFX & SWT 35
K Aus 2 Arrays xy - Graph erstellen AWT, Swing, JavaFX & SWT 9
D gerichteten Graph erstellen AWT, Swing, JavaFX & SWT 2
H 2D-Grafik Bibliothek um Graph\Baum zu erstellen AWT, Swing, JavaFX & SWT 2
K Graph erstellen AWT, Swing, JavaFX & SWT 3
S Balkendiagramm und XY-Graph in einem Chart? AWT, Swing, JavaFX & SWT 2
M Mandelbrot mit BigDecimal erstellen und in der UI zeichnen, funktionierte nicht. AWT, Swing, JavaFX & SWT 1
H JavaFX Canvas neu zeichnen anstoßen AWT, Swing, JavaFX & SWT 34
H Transparent zeichnen mit drawImage in paintComponent Methode AWT, Swing, JavaFX & SWT 3
N JavaFX Unicode zeichnen in javafx Label verwenden AWT, Swing, JavaFX & SWT 2
G 2D-Grafik Grafik in zwei verschiedenen Fenstern gleichzeitig zeichnen AWT, Swing, JavaFX & SWT 9
S Event Handling Neu zeichnen nur wenn Berechnung fertig ist AWT, Swing, JavaFX & SWT 4
W JavaFX Ich kann keinen Kreis richtig zeichnen AWT, Swing, JavaFX & SWT 8
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2
G Dreieck aus Pixeln zeichnen AWT, Swing, JavaFX & SWT 8
N Mit KeyListener ein rechteck zeichnen AWT, Swing, JavaFX & SWT 9
B 2D-Grafik paintcomponent Probleme beim zeichnen AWT, Swing, JavaFX & SWT 10
O Kann kei neues Panel zum zeichnen aufrufen... AWT, Swing, JavaFX & SWT 4
L Swing zeichnen AWT, Swing, JavaFX & SWT 14
S GUI Kreuz zeichnen und Position ausgeben AWT, Swing, JavaFX & SWT 3
S GUI Kreis zeichnen AWT, Swing, JavaFX & SWT 13
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
L Swing Ein Rechteck in ein Grid Zeichnen AWT, Swing, JavaFX & SWT 5
L JavaFX Animation, erst zeichnen dann anzeigen AWT, Swing, JavaFX & SWT 4
K Mehrere Linien zeichnen AWT, Swing, JavaFX & SWT 8
E Transparent zeichnen AWT, Swing, JavaFX & SWT 2
S AWT Probleme beim Zeichnen AWT, Swing, JavaFX & SWT 3
T Tic Tac Toe - GUI Linien zeichnen AWT, Swing, JavaFX & SWT 14
C Applet Zeichnen über Button-Click AWT, Swing, JavaFX & SWT 13
G Zeichnen Programm AWT, Swing, JavaFX & SWT 1
H Swing + Paint: Mehrere Objekte zeichnen lassen AWT, Swing, JavaFX & SWT 3
W Swing JPanel nur einmal nach mehreren Änderungen neu zeichnen AWT, Swing, JavaFX & SWT 1
D Quadrat, Rechteck zeichnen AWT, Swing, JavaFX & SWT 3
K Probleme beim zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 1
JG12111989 mehrere Polyline-Objekte zeichnen AWT, Swing, JavaFX & SWT 3
A Swing JRadioButton zeichnen nicht AWT, Swing, JavaFX & SWT 4
J Swing Vertikales Zeichnen eines Strings mit Java2D AWT, Swing, JavaFX & SWT 1
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
P 2D-Grafik Bogen(Arc) zwischen zwei Punkten zeichnen AWT, Swing, JavaFX & SWT 2
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
KilledByCheese Swing 2D JLabel Array Maze zeichnen AWT, Swing, JavaFX & SWT 2
S Parallele Linien zeichnen AWT, Swing, JavaFX & SWT 5
J Linien auf JPanel zeichnen AWT, Swing, JavaFX & SWT 3
P AWT Canvas freihändig zeichnen AWT, Swing, JavaFX & SWT 1
llabusch Linien in JPanel zeichnen AWT, Swing, JavaFX & SWT 6
S passende PaintComponent ? Zeichnen in TextArea mit Scrollpane ? AWT, Swing, JavaFX & SWT 2
I Applet BlueJ Applet - Bild mit if-Schleife zeichnen lassen AWT, Swing, JavaFX & SWT 16
L JavaFX JavafX Timelime zeichnen und schön stylen? AWT, Swing, JavaFX & SWT 2
I JFrame neu zeichnen, nicht überzeichnen! AWT, Swing, JavaFX & SWT 2
I Spielsteine zeichnen und entfernen AWT, Swing, JavaFX & SWT 3
H JavaFX Freezes beim Zeichnen mit Canvas AWT, Swing, JavaFX & SWT 3
H Swing BufferedImage zeichnen AWT, Swing, JavaFX & SWT 1
M JFreeChart neu zeichnen sich Wenn Jtable sich ändert AWT, Swing, JavaFX & SWT 5
S 2D-Grafik MouseDragged Linien zeichnen AWT, Swing, JavaFX & SWT 4
M Zeichnen ohne vorherige Linien zu löschen AWT, Swing, JavaFX & SWT 2
T Problem beim Zeichnen von Rechteck AWT, Swing, JavaFX & SWT 3
T Swing / Kreis zeichnen AWT, Swing, JavaFX & SWT 2
I Text zur Linie zeichnen AWT, Swing, JavaFX & SWT 1
I Pfeil zeichnen am Ende einer Linie AWT, Swing, JavaFX & SWT 1
D 2D-Grafik Inhalt eines Graphics in anderes Graphics zeichnen.... AWT, Swing, JavaFX & SWT 3
F Zeichnen des Button AWT, Swing, JavaFX & SWT 4
B Zeichnen mit paintComponent? Oder anders? AWT, Swing, JavaFX & SWT 15
C Swing Aus verschiedenen Klassen zeichnen. AWT, Swing, JavaFX & SWT 2
C Swing BufferedImage zeichnen und JLabels setzen. AWT, Swing, JavaFX & SWT 17
M Kein Zeichnen der Figuren auf JPanel AWT, Swing, JavaFX & SWT 4
J JButton neu zeichnen lassen AWT, Swing, JavaFX & SWT 9
S Quadrat auf Frame zeichnen AWT, Swing, JavaFX & SWT 2
P Image oder Icon auf Tooltip zeichnen AWT, Swing, JavaFX & SWT 4
C Graphics Objekt in Zeitschleife zeichnen AWT, Swing, JavaFX & SWT 4
X Swing JPanel mehrere Ebenen zeichnen AWT, Swing, JavaFX & SWT 13
G Zeichnen auf eine schwergewichtige Komponente? AWT, Swing, JavaFX & SWT 0
G Mehrere Strings um Kreis zeichnen und positionieren AWT, Swing, JavaFX & SWT 0
P SWT Nebula Gallery - Bildbereiche zeichnen AWT, Swing, JavaFX & SWT 3
A Swing Paint mit Button Clear den Hintergrund säubern um wieder zeichnen zu können AWT, Swing, JavaFX & SWT 2
A 2D-Grafik Zeichnen einer sich bewegenden Box mit BufferStrategy zieht Spur AWT, Swing, JavaFX & SWT 2
T AWT Bild laden und transparent zeichnen AWT, Swing, JavaFX & SWT 2
Helgon Swing Mit Swing zeichnen / NetBeans GUI AWT, Swing, JavaFX & SWT 11
M JLabel über JButtons zeichnen AWT, Swing, JavaFX & SWT 4
J JApplet und Zeichnen AWT, Swing, JavaFX & SWT 8
P 2D-Grafik NPE beim Zeichnen auf Graphics g AWT, Swing, JavaFX & SWT 8
4 Swing Graphen selber zeichnen AWT, Swing, JavaFX & SWT 2
T Über mehrere Panel zeichnen AWT, Swing, JavaFX & SWT 2
T Zeichnen von getSubimage funktioniert nicht AWT, Swing, JavaFX & SWT 7
M Bilder zeichnen, NullPointer Exception AWT, Swing, JavaFX & SWT 3
N JPanel neu zeichnen AWT, Swing, JavaFX & SWT 10
D Zeichnen eines Barplots AWT, Swing, JavaFX & SWT 2
bluerob Problem beim Image zeichnen via andere Klasse AWT, Swing, JavaFX & SWT 7
M Swing JFrame in einem Panel zeichnen AWT, Swing, JavaFX & SWT 3
M Suche Javabibliothek zum Zeichnen mathematischer Funktionen AWT, Swing, JavaFX & SWT 11
M Swing Warum öffnen sich beim Zeichnen mit Swing plötzlich zwei Fenster? AWT, Swing, JavaFX & SWT 5
P ScrollPane nach zeichnen dynamisch resize AWT, Swing, JavaFX & SWT 7
M Swing In GUI-Builder-JFrame mit Menü Schreiben und Zeichnen AWT, Swing, JavaFX & SWT 4
N 2D-Grafik 2 Probleme beim zeichnen AWT, Swing, JavaFX & SWT 18
S Swing Bild auf jPanel nach Änderung von JComboBox zeichnen AWT, Swing, JavaFX & SWT 4
C Funktionen zeichnen AWT, Swing, JavaFX & SWT 16
P JPanel neu zeichnen AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben