R: Grafik dynamisch aktualisieren [geschlossen]

9

Dies ist eine Frage der Datenvisualisierung. Ich habe eine Datenbank, die einige Daten enthält, die ständig überarbeitet werden (Online-Update). Was ist der beste Weg in R, um ein Diagramm alle 5 oder 10 Sekunden zu aktualisieren? (ohne noch einmal zu planen ist alles möglich)?

rot

RockScience
quelle

Antworten:

7

Angenommen, Sie möchten R windows()oder ein x11()Diagramm aktualisieren , können Sie Funktionen wie points()und verwenden lines(), um neue Punkte hinzuzufügen oder Linien in einem Diagramm zu erweitern, ohne es neu zu zeichnen. Beachten Sie jedoch, dass dadurch der Achsenbereich nicht geändert wird, um Punkte aufzunehmen, die möglicherweise nicht sichtbar sind. Im Allgemeinen ist es normalerweise eine gute Idee, das Plotten selbst sofort zu erstellen - beispielsweise indem der Rechenaufwand in eine reduzierte mittlere Darstellung verlagert wird, die schnell geplottet werden kann, wie eine Dichtekarte anstelle einer großen Anzahl von Punkten oder eine Verringerung der Auflösung von Liniendiagrammen ( Dies kann jedoch komplex sein.

Verwenden Sie, um die R-Sitzung für eine bestimmte Zeit ohne Wartezeit zu halten Sys.sleep().


quelle
(+1) Ich habe die Sys.sleep()Funktion vergessen . Ich denke, der und Achsenbereich sollte im Voraus festgelegt werden, nein? yxy
Chl
@chl, ja, die und Achsenbereiche sollten im Voraus eingerichtet werden. yxy
mpiktas
1
@mpiktas Oder starten Sie den Plot einfach mit einem einzigen Aufruf von plot(), möglicherweise mit, 0,0,type="n"wenn noch nichts zu plotten ist ... In der Tat ist dies viel einfacher, als plot.new()alle Dinge wie Äxte oder Beschriftungen von Hand zu klingeln und hinzuzufügen.
Dies scheint zwar das einfachste zu sein ... aber schade, dass die Achsen nicht aktualisiert werden. Da ich eine Zeitreihe online aktualisieren möchte und weiß, mit welcher Geschwindigkeit sich die x-Achse bewegt, kann ich wahrscheinlich alle n Aktualisierungen alles neu aufzeichnen.
RockScience
8

Für die Offline-Visualisierung können Sie PNG-Dateien generieren und mit ImageMagick in ein animiertes GIF konvertieren . Ich habe es zur Demonstration verwendet (dies zeichnet jedoch alle Daten neu):

source(url("http://aliquote.org/pub/spin_plot.R"))
dd <- replicate(3, rnorm(100))
spin.plot(dd)

Dadurch werden mehrere PNG-Dateien generiert, denen ein Präfix vorangestellt ist fig. Dann auf einer un * x-Shell,

convert -delay 20 -loop 0 fig*.png sequence.gif

gibt diese Animation (die von modernen angewandten biostatistischen Methoden unter Verwendung von S-Plus , S. Selvin, 1998 inspiriert ist ):

Alt-Text

Eine weitere Option, die vielversprechender aussieht, besteht darin, sich auf das Animationspaket zu verlassen . Es gibt ein Beispiel mit einer automatischen Regression für bewegliche Fenster , mit der Sie beginnen sollten.

chl
quelle