Come visualizzare i dati delle serie temporali?


8

Ho alcuni dati di serie temporali che voglio visualizzare come trama 2d.

L'input è formato ISO-data e valore separati da spazio, un record per riga:

2010-10-21 23
2010-10-22 32
etc.

L'output dovrebbe essere un bel grafico 2D. Requisiti di base:

  • output in una finestra X11 (come anteprima) e in un file png
  • l'asse x deve comprendere le date e ridimensionare naturalmente i dati, ad esempio uno spazio tra 3 giorni dovrebbe essere tre volte più lungo uno spazio tra 1 giorno
  • dovrebbe essere richiamabile da una sceneggiatura
  • bella uscita e comoda da usare

Bonus:

  • output svg

Ho provato gnuplote funziona - ha un po 'di supporto per la data:

gnuplot> set xdata time
gnuplot> set timefmt "%Y-%m-%d"
gnuplot> plot "test.dat" using 1:2

Ma ho alcuni problemi con gnuplot:

  • con le impostazioni predefinite, i grafici sembrano molto brutti
  • è difficile trovare elementi nel manuale - ad es. quando si tracciano punti come si usano i piccoli cerchi pieni invece del segno '+' predefinito?
  • la shell gnuplot è un dolore al collo - non usa readline, è rotta, il completamento del comando è uno scherzo, non so come abilitare le scorciatoie vi - o se sono supportate, che dire della ricerca inversa ecc.

Quindi la mia domanda: quali sono le alternative per visualizzare i dati delle serie temporali?

O sto esagerando i problemi di gnuplot?

Risposte:


5

L'intero scopo dell'esistenza di RRDTool è la stampa di dati di serie temporali, ma è principalmente pensato per la rappresentazione grafica automatizzata e potrebbe non essere la soluzione migliore per le tue esigenze.

Detto ciò:

  • Può essere riprodotto in formato PNG o SVG, ma non ha funzionalità di anteprima.
  • Il time-scaling è integrato.
  • Facilità di script (accesso alla riga di comando o librerie in molti linguaggi di scripting).
  • L'output può essere reso abbastanza decente.

Grafico RRDTool


Sembra interessante, l'anteprima mancante non è poi così male - solo generare un png e usare un visualizzatore di immagini fianco a fianco dovrebbe essere ok. Potresti dare un esempio di semplice chiamata da riga di comando di questo strumento?
maxschlepzig,


Fondamentalmente si esegue rrdtool create ...una volta per impostare il db RRD, rrdtool update ...una volta per pezzo di dati e rrdtool graph ...per generare un grafico.
Kowh,

12

R è meglio in questo genere di cose di Gnuplot perché:

  1. È un ambiente di programmazione completo, con API di estensione compatibili con C e Fortran . Se il tuo computer può fare qualcosa, puoi farlo con R.

  2. Molti hanno già contribuito con le loro soluzioni a problemi comuni al CRAN : R Network Network completo. Potresti trovare i pacchetti zooe ggplot2utili per questa attività.

  3. Ci sono molti libri su analisi di serie temporali e R in genere .

R ha tutto ciò che hai chiesto:

  • Emette su X11, PNG o (con un componente aggiuntivo ) SVG

  • Cerchi pieni per i punti della trama: passa pch=19o pch=20a par () o points () . Esistono molti altri simboli di punti di trama predefiniti, oltre a tutti Unicode se si utilizza un carattere con supporto Unicode.

  • Creazione di grafici consapevoli del tempo: se quelli incorporati non hanno il ridimensionamento desiderato, puoi costruire tutto ciò di cui hai bisogno con le primitive di stampa di R

  • Richiama da uno script: usa una #!/usr/bin/Rscriptriga shebang sul tuo file di programma R.

  • Simpatico e conveniente: ci sono front-end della GUI, se ti piace, e se non ti piace, l'ambiente guidato dai comandi predefinito ha molte funzioni interessanti, come la possibilità di vedere il codice sorgente R di molte operazioni integrate, che aiuta per sapere come è assemblato il sistema. (Sì, gran parte di R è scritto in R!)

  • Trame graziose: l'antialiasing è l'impostazione predefinita se R è costruito contro Il Cairo, come lo sarà se è una build recente su Linux. Le vecchie versioni di R potrebbero non avere AA incorporato. Per avere un'idea della capacità di R se ci metti un po 'di tempo, dai un'occhiata a questo:

    (Clicca sull'immagine per l'articolo che la descrive.)

Per quanto riguarda la riga di comando di gnuplot, è possibile crearla per supportare readline GNU, BSD libedit o, come fallback, uno schema di modifica della riga di comando incorporato personalizzato. (Questo secondo p.20 del manuale .) Ho gnuplot 3.7 su una macchina e 4.0 su un'altra, e sono entrambi costruiti con readline. Il tuo binario è costruito senza nessuno di questi?


Ho iniziato a usare R per tutte le mie statistiche e la stampa al lavoro, è fantastico!
jsbillings,

Un buon suggerimento su libedit. Bene, sto usando il pacchetto gnuplot predefinito su Ubuntu 10.04. Sembra che sia collegato contro libedit che sembra supportare almeno la modalità vi. Ma il completamento dei comandi è solo minimo (funziona solo per i nomi di file) e non con i comandi gnuplot, cioè è sostanzialmente inutile (questo non è colpa di libedit).
maxschlepzig,

Potresti aggiungere un semplice esempio di sessione R per generare un grafico di base (leggere il file (sopra riportato) ed emettere una funzione di diagramma immagino)?
maxschlepzig,
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.