Hallo,
Ich erstelle gerade eine Anwendung, in der enorm viele Zeitreihenmessungen x-y-geplottet werden sollen, wobei mehrere Plots gleichzeitig, nebeneinander dargestellt werden müssen (zwischen tausenden und hunderttausenden Datenpunkten pro Plot; die Anzahl der Plots schwankt zwischen 10 bis 1000). Stellt man alle Datenpunkte und alle Plots gleichzeitig dar, kommt es zu enormen Perfomance-Einbuẞen. Dargestellt werden die Plots innerhalb eines JScrollPanes. Um mit den Daten arbeiten zu können, muss bei deren Darstellung stark rausgezoomt werden, d.h. die Datenpunkte rücken sehr dicht zusammen. Bevor die Datenpunkt dargestellt werden, müssen diese von der Messeinheit auf Pixel-Positionen innerhalb der Panel-Dimensionen transformiert werden, wobei allerdings die Datenpunkt-Positionen auf dem Panel von der gewählten Skalierung (Zoomfaktor für entsprechend zu skalierende Achse) abhängig sind. Die Skalierung ist i.d.R. so gewählt, dass ein Groẞteil der Datenpunkte nicht gezeichnet werden muss, da diese überlappen.
Zudem sollen die Datenpunkte untereinander verbunden werden, d.h. Interpolationsberechnungen werden zwischen den Datenpunkten angestellt.
Bereits bei wenig dargestellten Plots, ruckelt es gewaltig.
Die Frage ist, welche Ansätze helfen, um hier die Performance zu verbessern? Wie sollten derartige Datenmenge aufbewahrt werden, bzw. wie kann man bei flexiblem Zoomfaktor möglichst performant auf die nur notwendigen Datenpunkte zugreifen, diese transformieren, interpolieren bzw. darstellen? Bisher speicher ich diese als ArrayList<double[/*Werte der Zeitachse*/][/*Werte der Datenpunkte*/]>, wobei jedes ArrayList-Element ein Zeitreihen-Log darstellt.
Leider bietet JFreeChart für dieses Projekt nicht adäquat Darstellungsmöglichkeiten, sodass ich die Plots selber schreiben muss.
Ich erstelle gerade eine Anwendung, in der enorm viele Zeitreihenmessungen x-y-geplottet werden sollen, wobei mehrere Plots gleichzeitig, nebeneinander dargestellt werden müssen (zwischen tausenden und hunderttausenden Datenpunkten pro Plot; die Anzahl der Plots schwankt zwischen 10 bis 1000). Stellt man alle Datenpunkte und alle Plots gleichzeitig dar, kommt es zu enormen Perfomance-Einbuẞen. Dargestellt werden die Plots innerhalb eines JScrollPanes. Um mit den Daten arbeiten zu können, muss bei deren Darstellung stark rausgezoomt werden, d.h. die Datenpunkte rücken sehr dicht zusammen. Bevor die Datenpunkt dargestellt werden, müssen diese von der Messeinheit auf Pixel-Positionen innerhalb der Panel-Dimensionen transformiert werden, wobei allerdings die Datenpunkt-Positionen auf dem Panel von der gewählten Skalierung (Zoomfaktor für entsprechend zu skalierende Achse) abhängig sind. Die Skalierung ist i.d.R. so gewählt, dass ein Groẞteil der Datenpunkte nicht gezeichnet werden muss, da diese überlappen.
Zudem sollen die Datenpunkte untereinander verbunden werden, d.h. Interpolationsberechnungen werden zwischen den Datenpunkten angestellt.
Bereits bei wenig dargestellten Plots, ruckelt es gewaltig.
Die Frage ist, welche Ansätze helfen, um hier die Performance zu verbessern? Wie sollten derartige Datenmenge aufbewahrt werden, bzw. wie kann man bei flexiblem Zoomfaktor möglichst performant auf die nur notwendigen Datenpunkte zugreifen, diese transformieren, interpolieren bzw. darstellen? Bisher speicher ich diese als ArrayList<double[/*Werte der Zeitachse*/][/*Werte der Datenpunkte*/]>, wobei jedes ArrayList-Element ein Zeitreihen-Log darstellt.
Leider bietet JFreeChart für dieses Projekt nicht adäquat Darstellungsmöglichkeiten, sodass ich die Plots selber schreiben muss.
Zuletzt bearbeitet: