R: aggiorna un grafico in modo dinamico [chiuso]


9

Questa è una domanda di visualizzazione dei dati. Ho un database che contiene alcuni dati che viene costantemente rivisto (aggiornamento online). Qual è il modo migliore in R per aggiornare un grafico ogni diciamo 5 o 10 secondi. (senza tracciare di nuovo tutto è possibile)?

FRED

Risposte:


7

Supponendo di voler aggiornare R windows()o x11()grafico, è possibile utilizzare funzioni come points()e lines()per aggiungere nuovi punti o estendere le linee su un grafico senza ridisegnare; tuttavia nota che ciò non modificherà l'intervallo degli assi per adattarsi a punti che potrebbero non essere visibili. In generale, è di solito una buona idea rendere istantanea la stampa stessa, ad esempio spostando lo sforzo di calcolo in una rappresentazione intermedia ridotta che può essere tracciata rapidamente, come una mappa di densità anziché un numero enorme di punti o riducendo la risoluzione dei grafici a linee ( questo può essere complesso però).

Per tenere la sessione R per un certo tempo senza attendere l'attesa, utilizzare Sys.sleep().


(+1) Ho dimenticato la Sys.sleep()funzione. Penso che l' intervallo dell'asse - dovrebbe essere impostato in anticipo, no? yXy
chl

@chl, sì il ed intervalli degli assi devono essere impostati in anticipo. yXy
mpiktas,

1
@mpiktas O semplicemente inizia la trama con una sola chiamata plot(), possibilmente con 0,0,type="n"se non c'è ancora nulla da tracciare ... In effetti questo è molto più facile che ding plot.new()e aggiungere tutte le cose come assi o etichette a mano.

In effetti questo sembra il più semplice ... ma peccato che gli assi non vengano aggiornati. Poiché voglio aggiornare online una serie temporale e so a quale velocità si muove l'asse x, immagino di poter sostituire tutto ogni n aggiornamenti.
RockScience,

8

Per la visualizzazione offline, è possibile generare file PNG e convertirli in GIF animate utilizzando ImageMagick . L'ho usato per la dimostrazione (questo ridisegna tutti i dati, però):

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

Questo genera diversi file PNG, con il prefisso fig. Quindi, su una shell un * x,

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

dà questa animazione (che si ispira ai moderni metodi biostatistici applicati usando S-Plus , S. Selvin, 1998):

testo alternativo

Un'altra opzione che sembra molto più promettente è quella di fare affidamento sul pacchetto di animazione . C'è un esempio con una regressione automatica della finestra mobile che dovrebbe lasciarti iniziare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.