2010-03-09 14 views
11

Ich arbeite mit einem Datenrahmen, in dem eine der Spalten aus POSIXct Datum-Uhrzeit-Werten besteht. Ich versuche, ein Histogramm dieser Zeitstempel plotten mit ggplot2 aber ich habe zwei Fragen:So passen Sie die Zeitskalenachse für das Histogramm ggplot an

  1. Ich weiß nicht, wie die binwidth in geom_histogram() einzustellen. Ich möchte jeden Behälter auf einen Tag oder eine Woche einstellen. Ich habe versucht, ein difftime-Objekt zur Verfügung zu stellen, aber ich bekomme einen Fehler. Ich versuchte auch binwidth=1, aber R hängt nur.

  2. Wie setze ich die Grenzwerte in scale_x_time()? Die einzige Möglichkeit, es zum Laufen zu bringen, bestand darin, meine POSIXct Zeitstempel mit as.Date() zu konvertieren.

+0

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

Antwort

21
  1. Die binwidth wird in Sekunden gemessen, so ist pro Woche binwidth=7*24*60*60 eingestellt.
  2. Grenzwerte können als Vektor von 2 POSIXct-Objekten angegeben werden.

Ein Beispiel:

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 . Aber meinst du "% d /% m /% Y" als Format? –

+2

% d gibt eine führende Null an, während% e ein Leerzeichen an einstelligen Tagen angibt. Nicht wirklich sicher, welcher besser aussieht. –

+1

Danke! Mein Problem mit der Skala war, dass ich scale_x_time() anstelle von scale_x_datetime() verwendete. – Dave

Verwandte Themen