JFreeChart aktualisieren wenn sich die Ausgangsdaten ändern

Rol

Aktives Mitglied
Hallo,

ich habe ein Array mit Daten welche ich als BarChart mit JFreeChart anzeige. Das funktioniert soweit.
Wenn sich nun aber die Daten im Array ändern soll auch der Chart aktualisiert werden. Wie ich in der API gelesen habe sollte das eigentlich automatisch geschehen, tut es aber leider nicht.

Den Chart erzeuge ich so:
Java:
  public void showChart() {
        datasetWeekday = createWeekdayChartDataset();
        chartWeekday = createChartWeekday(datasetWeekday);
        chartWeekdayPanel = new ChartPanel(chartWeekday);
        myGUI.weekdayChartCanvas.add(chartWeekdayPanel);
        myGUI.weekdayChartCanvas.repaint();
    }
...
    private CategoryDataset createWeekdayChartDataset() {
        String[] dayOfWeek = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        for (int i = 0; i < weekdayHisto.length; i++) {
            dataset.addValue((weekdayHisto[i] / 1000000f), "", dayOfWeek[i]);
        }
        return dataset;
    }

Wenn sich nun die Daten im Array "weekdayHisto" geändert haben "aktualisiere" ich den Chart so:

Java:
   public void refreshChart() {
        mytGUI.weekdayChartCanvas.removeAll();
        datasetWeekday = createWeekdayChartDataset();
        chartWeekday = createChartWeekday(datasetWeekday);
        chartWeekdayPanel = new ChartPanel(chartWeekday);
        mytGUI.weekdayChartCanvas.add(chartWeekdayPanel);
        mytGUI.weekdayChartCanvas.repaint();
    }

Das funktionier zwar, aber das ist doch Pfusch...
Kann mir jemand sagen, wie man es "richtig" macht?
 

Guybrush Threepwood

Top Contributor
JFreeChart ist nur begrenzt dazu geeignet, Daten online zu plotten. Vermutlich brauchst Du für diesen Anwendungsfall eine andere Bibliothek.
Hast Du mal versucht, die neuen Daten dem Dataset hinzuzfügen statt ein komplett neues Chart-Objet zu erstellen? Du kreierst momentan jedes Mal ein komplett neues Dataset und anschließend einen neuen Chart mit einem neuen Chart-Panel, der dann der GUI hinzugefügt wird. Ziemlicher Overhead, oder?
 
S

SlaterB

Gast
das wenigste was du tun musst, ist doch wohl, die Daten aus dem Array wieder ans DefaultCategoryDataset zu übergeben,
entweder an das vorhandene oder notfalls ein neues und in der Chart das neue Model setzen

das mag reichen, weniger geht auf keinen Fall
 

Rol

Aktives Mitglied
JFreeChart ist nur begrenzt dazu geeignet, Daten online zu plotten. Vermutlich brauchst Du für diesen Anwendungsfall eine andere Bibliothek.

Kannst Du was empfehlen? Ich brauche Balken- und Linien-Charts.

Hast Du mal versucht, die neuen Daten dem Dataset hinzuzfügen statt ein komplett neues Chart-Objet zu erstellen?

Ja, dann wird der Cahrt aber nicht aktualisiert.

Du kreierst momentan jedes Mal ein komplett neues Dataset und anschließend einen neuen Chart mit einem neuen Chart-Panel, der dann der GUI hinzugefügt wird. Ziemlicher Overhead, oder?

Ich weiß, deshalb ja meine Frage...
 
S

SlaterB

Gast
welche verschiedenen Möglichkeiten gibt es denn zu meinen, 'Daten aus dem Array ans DefaultCategoryDataset zu übergeben'?

du hast in deinem Array die Daten, 1, 2, 3 und 4 und willst diese in einer Chart anzeigen, also müssen die ja irgendwie übergeben werden,
du hast das doch schon oben im ersten Posting im ersten Codeblock Zeile 12-14, die Werte vom Array kommen ins DataSet,
was gibt es daran nicht zu verstehen?

ich sage lediglich, dass wenn im Array was neues steht, dass das dann auch ins DataSet muss,
nicht unbedingt auf deinem Weg, alles plattmachen und komplett neu, sondern einfach ins vorhandene DataSet die Werte neu einfügen, mit quasi derselben Schleife

> wie das neue Model setzen?
wie setzt du denn bisher das Model? die Methode createChartWeekday() hast du nicht gepostet,
wohin immer du das übergibst, wahrscheinlich im Konstruktor, denkst du nicht dass es dann auch dort eine setModel/ setDataset-Methode gibt?
das ist doch nicht schwer zu denken

ok, bei JFreeChart kann es bisschen komplizierter sein, wahrscheinlich doch eher eine statische Konstruktionsmethode als ein normaler Konstruktor,
ein JFreeChart-Objekt hat keine derartige Methode, da muss man erst das Plot-Objekt abfragen, dort dann direkt auch nicht,
erst auf CategoryPlot casten
 

Rol

Aktives Mitglied
So geht es:
Java:
    public void refreshChart() {
        for (int i = 0; i < weekdayHisto.length; i++) {
            datasetWeekday.setValue((weekdayHisto[i] / 1000000f), "", dayOfWeek[i]);
        }
    }

Danke!
 

-horn-

Bekanntes Mitglied
moien,

an sowas sitze ich auch gerade, habe aber noch keinen plan wie das funktioniert.
ich brauche das für http://www.java-forum.org/awt-swing...en-graphen-anzeigen.html?highlight=jfreechart

kann mir mal jemand einen tipp geben, wo man dazu ein gutes und kleines beispiel herbekommt? wenn es geht bitte vollständig. ich muss mir das durch ganzebeispiele erschließen und die hier geposteten schnippchen sind leider für mich zu wenig :(

ausserdem wäre es cool zu wissen, wo ich es auf einer anderen canvas (der von WorldWindJava) anzeigen lassen kann.

grüße, andreas
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Swing JfreeChart aktualisieren - mit daten aus thread AWT, Swing, JavaFX & SWT 3
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
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
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
C Default table model aktualisieren AWT, Swing, JavaFX & SWT 7
G JavaFX BarChart während der Runtime aktualisieren AWT, Swing, JavaFX & SWT 4
T TableView aktualisieren AWT, Swing, JavaFX & SWT 1
W JavaFX TableView aktualisieren AWT, Swing, JavaFX & SWT 1
D JavaFX Label flackert beim aktualisieren AWT, Swing, JavaFX & SWT 12
J Swing JLabel Verknüpfung aktualisieren AWT, Swing, JavaFX & SWT 3
J JavaFX Label aktualisieren AWT, Swing, JavaFX & SWT 18
M Muss man die ObservableList aktualisieren? AWT, Swing, JavaFX & SWT 3
B Bounds aller Panels aktualisieren AWT, Swing, JavaFX & SWT 0
-DD Lobby/Spielerliste aktualisieren bei Suche AWT, Swing, JavaFX & SWT 1
T JFrame aktualisieren AWT, Swing, JavaFX & SWT 2
M JavaFX Automatisches Aktualisieren der Seite AWT, Swing, JavaFX & SWT 26
ralfb1105 Swing JTable aktualisieren AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben