In JFreeChart Geraden erzeugen

mukipi

Mitglied
Hallo liebe Community:meld:

ich schreibe gerade an einer Arbeit in der ich einen geometrischen Algorithmus implementieren und visualisieren soll. Dabei muss ich Punkte in ein Koordinatensystem eintragen können und mit diesen Punkten verschiedene Geraden erzeugen und vergleichen/analysieren. Auch Schnittpunkte zu kennen wäre hilfreich.

Nachdem ich erst ein bisschen mit JXGraph herumexperimentiert habe, bin ich jetzt bei JFreeChart angelangt. Mit JFreeChart kann ich wunderbar Punkte in ein Koordinatensystem eintragen, aber mir gelingt es nicht Geraden zu erzeugen. Punkte mit Linien oder Splines zu verbinden ist nicht das Problem, ich möchte nur zu einem bestimmten Punkt eine Gerade erzeugen.

Kann man sowas mit JFreeChart machen? Und wenn ja wie? Gibt es einen passenden Renderer oder Ähnliches?

Oder würdet ihr eine ganz andere Bibliothek empfehlen, die ich noch nicht auf dem Schirm hatte?:bahnhof:
Bei JXGraph stand ich vor dem Problem zwar Geraden erzeugen zu können, dafür aber keine Punkte mehr...

Ich freue mich über jede Hilfe :)

LG, mukipi
 

mukipi

Mitglied
Oh Entschuldigung, da habe ich mich unklar ausgedrückt:oops:
Ich habe natürlich eine Funktion, in diesem Fall y = 2ax-b, die mir zu jedem Punkt eine Gerade berechnet. Wird mein Problem dadurch klarer?
 

Tom299

Bekanntes Mitglied
Hast du dir mal JavaFX angeschaut? Vielleicht bringt dich das weiter:
https://docs.oracle.com/javafx/2/charts/line-chart.htm

Ich hab vor Jahren mal JFreeChart benutzt, aber habe nur CandleStick-Charts verwendet (Börsenprogramm). Vielleicht bietet JavaFX hier ja bessere Möglichkeiten. Hab da mit Charts aber noch null Erfahrung, was sich aber in Zukunft noch ändern wird ;-)
 

Harry Kane

Top Contributor
Ich habe natürlich eine Funktion, in diesem Fall y = 2ax-b, die mir zu jedem Punkt eine Gerade berechnet. Wird mein Problem dadurch klarer?
Schon, obwohl du dich wieder sehr unglücklich ausgedrückt hast.
Eine Funktion berechnet dir nicht zu jedem Punkt eine Gerade, sondern zu jedem x-Wert einen y-Wert, die dann beide zusammen einen Punkt ergeben.
Du kannst dir z. B. eine XYAnnotation schreiben. XYAnnotation ist ein interface, welches von Objekten, die du auf einen XYPlot zeichnen willst, implementiert werden kann.
Dazu musst du die Methode
Java:
draw(java.awt.Graphics2D g2, XYPlot plot, java.awt.geom.Rectangle2D dataArea, ValueAxis domainAxis, ValueAxis rangeAxis, int rendererIndex, PlotRenderingInfo info)
implementieren.
Dann kannst du dir über domainAxis.getLowerBound() und domainAxis.getUpperBound() die untere und obere Grenze der x-Achse holen und zu den x-Koordinaten mit deiner Funktionsgleichung die y-Werte berechnen. Aus den beiden Punkten kannst du eine Line2D.Double Instanz erzeugen und mit LineUtilities.clipLine(theLine, dataArea) den Teil der Linie berechnen, der innerhalb der Zeichenfläche liegt.
Klingt kompliziert, ist aber ganz einfach.
 

mukipi

Mitglied
Vielen Dank erstmal für beide Vorschläge! :)

Ich werde erst einmal die XYAnnotation ausprobieren, das sieht so aus als könnte es mir helfen. Falls das nicht klappt les ich mich in JavaFX ein oder melde mich nochmal :)

Dankeschön!
 

lam_tr

Top Contributor
Also ich würde auch eher JavaFX Charts benutzen, weil man damit viel mehr machen kann, zumal JFreeChart auf Swing basiert und Javafx Swing Ablöser sein wird. Und übrigens kann man die Charts in JavaFX schön animieren und viel dynamischer anpassen. Wird auf jeden das richtige sein. Lohnt sich diese API anzugucken!
 

Harry Kane

Top Contributor
...zumal JFreeChart auf Swing basiert und Javafx Swing Ablöser sein wird.
Jein. Ein ChartPanel ist zwar eine Swing-Komponente, aber JFreeChart braucht lediglich die Java2D API und kann auch ohne instanzen von javax.swing.JComponent oder java.awt.Component verwendet werden.
Und je nachdem wie fit der TE in javafx ist, sollte JFreeChart viiiiel einfacher zu verwenden sein.
 

lam_tr

Top Contributor
Zu JFreeChart gibt es nur eine kommerzielle Doku, UI sieht meiner Meinung nicht gut aus. Padding und Zoomen geht's zwar aber sehr umständlich.

Alleine wegen Databinding und Animation spricht schon für JavaFX.
 

Harry Kane

Top Contributor
Zu JFreeChart gibt es nur eine kommerzielle Doku,
... und zahlreiche Tutorials.

UI sieht meiner Meinung nicht gut aus
.. Geschmackssache und konfigurierbar. Mit gefällt bspw. das sanfte, pastellige Aussehen der Charts auf dem geposteten Link nichtso sehr. Ich will Daten analysieren und nicht das Kinderzimmer tapezieren.

Padding und Zoomen geht's zwar aber sehr umständlich.
:confused: Dragging mit der linken Maustaste = Zoom, wenn die Strg Taste gedrückt wird, wird gepant. Diese features müssen lediglich auf dem ChartPanel aktiviert werden.

Alleine wegen Databinding und Animation spricht schon für JavaFX.
Animation: wers braucht... Und tanzende Balken in einem Balkendiagramm mit JFreeChart zu progammieren, ist auch nicht weiter schwer.
Databinding: Zumindest der Code in dem geposteten Link lässt für mich keinen Vorteil gegenüber JFreeChart erkennen. Was JFreeChart am Anfang vielleicht etwas schwieriger macht, ist die weitestgehend auf interfaces basierende Architektur. in javafx scheint alles auf Klassen zu basieren. Für fortgeschrittene Anwendungen IMHO ein klarer Nachteil.
 

lam_tr

Top Contributor
... und zahlreiche Tutorials.

Hmmm ja nun gut ich weiß nicht genau wie jetzt tutorialmäßig aussieht, aber 2008 als ich damit angefangen habe, war kaum Tutorials da und hatte die kommerzielle Doku dazu gekauft.

.. Geschmackssache und konfigurierbar. Mit gefällt bspw. das sanfte, pastellige Aussehen der Charts auf dem geposteten Link nichtso sehr.

Mag sein dass man da etwas konfigurieren kann, aber einfach ist es nicht. JavaFX lässt sich sehr schnell über CSS einstellen. Es ist einfach eine Auslegungssache, du willst schnell und einfach Daten auslesen. Ich lege da sehr viel Wert auf optisches Aussehen.

Ich denke wenn JFreeChart deine Anfoderungen ausreichen, dann ist es doch gut. Ich musste damals zu viel drum rum machen um auf das Ergebnis kommen zu können. Deswegen war ich von vorne rein schon begeistert von JavaFX. Die Lernkurve ist dabei auch nicht so hoch.

Architekonisch habe ich da noch nicht ins Detail geguckt, aber ja wenn die Charts nur auf Klassen/Basisklassen definiert sind, dann ist JFreeChart da schon vorteilhafter. Aber für reine Anwendung ist es nicht tragisch.

Trotzdem danke für die Aufklärung!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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 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
L JFreeChart - Line Shapes AWT, Swing, JavaFX & SWT 15
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 StackedBar + Line-Chart kombinieren 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
P Rendern von Geraden im 3 dimensionalen Raum durch Rotationen AWT, Swing, JavaFX & SWT 0
I TIFF im CMYK-Farbmodell + mit dpi-Auflösung im Header erzeugen - wie? AWT, Swing, JavaFX & SWT 0
Monokuma Blöcke erzeugen (JavaFX) AWT, Swing, JavaFX & SWT 1
B Java FX In control.TreeCell-Implementierung Binding erzeugen AWT, Swing, JavaFX & SWT 0
Q-bert Dynamische Komponente erzeugen AWT, Swing, JavaFX & SWT 6
I Schöne Heatmap erzeugen AWT, Swing, JavaFX & SWT 10
K Color-Objekt erzeugen in CMYK AWT, Swing, JavaFX & SWT 2
MaxG. Swing Dynamisch grafische Objekte erzeugen AWT, Swing, JavaFX & SWT 12
kilopack15 JLabels im Array erzeugen AWT, Swing, JavaFX & SWT 2
J JavaFX Buttons mit Array erzeugen AWT, Swing, JavaFX & SWT 1
B JavaFX Wie Treeview aus xml erzeugen AWT, Swing, JavaFX & SWT 11
S AWT JTextFields durch Array im JMenu erzeugen? AWT, Swing, JavaFX & SWT 19
D Mit Klick auf Button ein neues Fenster erzeugen AWT, Swing, JavaFX & SWT 11

Ähnliche Java Themen

Neue Themen


Oben