2010-03-09 21 views
11

Estoy trabajando con un marco de datos donde una de las columnas consiste en POSIXct valores de fecha y hora. Estoy tratando de trazar un histograma de estas marcas de tiempo utilizando ggplot2 pero estoy teniendo dos cuestiones:Cómo ajustar el eje de la escala de tiempo para el histograma ggplot

  1. que no sé cómo configurar el binwidth en geom_histogram(). Me gustaría establecer cada contenedor para un día o una semana. He intentado proporcionar un objeto difftime, pero me sale un error. También probé binwidth=1 pero R simplemente se cuelga.

  2. ¿Cómo establezco los límites en scale_x_time()? La única forma en que podía hacer que funcionara era convirtiendo mis marcas de tiempo POSIXct usando as.Date().

+0

Véase también http://stackoverflow.com/questions/10770698/understanding-dates-and-plotting-a-histogram-with-ggplot2-in-r –

Respuesta

21
  1. El binwidth se mide en segundos, por lo que a bin por semana ajustado binwidth=7*24*60*60.
  2. Los límites se pueden dar como un vector de 2 objetos POSIXct.

Un ejemplo:

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

Niza . ¿Pero quiso decir "% d /% m /% Y" como el formato? –

+2

% d da un cero inicial mientras que% e da un espacio inicial en días de un solo dígito. No estoy seguro de cuál se ve mejor. –

+1

¡Gracias! Mi problema con la escala se debió a mi uso de scale_x_time() en lugar de scale_x_datetime(). – Dave

Cuestiones relacionadas