2010-03-09 10 views
11

Sto lavorando con un frame di dati in cui una delle colonne è costituita da valori di data e ora POSIXct. Sto cercando di tracciare un istogramma di questi timestamp utilizzando ggplot2 ma sto avendo due questioni:Come regolare l'asse della scala temporale per l'istogramma ggplot

  1. non so come impostare la binwidth in geom_histogram(). Mi piacerebbe impostare ogni cestino per un giorno o una settimana. Ho provato a fornire un oggetto difftime, ma ottengo un errore. Ho anche provato binwidth=1 ma R si blocca.

  2. Come impostare i limiti in scale_x_time()? L'unico modo per farlo funzionare era convertire i miei timestamp POSIXct usando as.Date().

+0

Vedi anche http://stackoverflow.com/questions/10770698/understanding-dates-and-plotting-a-histogram-with-ggplot2-in-r –

risposta

21
  1. Il binwidth viene misurata in secondi, in modo da bin a settimana impostato binwidth=7*24*60*60.
  2. I limiti possono essere dati come vettore di 2 oggetti POSIXct.

Un esempio:

y<-as.POSIXct('1970/01/01')+cumsum(rnorm(100,mean=24*60*60,sd=24*60*60)) 
p<-qplot(y,binwidth=7*24*60*60,fill=I('steelblue'),col=I('black')) 
p<-p+scale_x_datetime(major="1 week", 
         minor="1 days", 
         format="%e/%m/%Y", 
         limits=c(as.POSIXct('1970/02/01'), 
           as.POSIXct('1970/03/31'))) 
print(p) 
+0

Nizza . Ma intendevi "% d /% m /% Y" come formato? –

+2

% d indica uno zero iniziale mentre% e fornisce uno spazio iniziale nei giorni a cifra singola. Non sono sicuro di quale sia l'aspetto migliore. –

+1

Grazie! Il mio problema con la scala era dovuto al fatto che utilizza scale_x_time() piuttosto che scale_x_datetime(). – Dave

Problemi correlati