2011-12-07 17 views
7

Tengo el siguiente conjunto de datos con los datos recopilados diariamente.Comportamiento inesperado de scale_x_datetime en ggplot2

R> toydata 
       date group coef 
1 2011-11-04 23:59:59  1 2.32 
2 2011-11-05 23:59:59  1 2.34 
3 2011-11-06 23:59:59  1 2.46 
4 2011-11-07 23:59:59  1 2.68 
5 2011-11-04 23:59:59  2 2.17 
6 2011-11-05 23:59:59  2 1.90 
7 2011-11-06 23:59:59  2 2.13 
8 2011-11-07 23:59:59  2 2.52 

Everythings parece funcionar bien:

R> toydata$date 
[1] "2011-11-04 23:59:59 EST" "2011-11-05 23:59:59 EST" 
[3] "2011-11-06 23:59:59 EST" "2011-11-07 23:59:59 EST" 
[5] "2011-11-04 23:59:59 EST" "2011-11-05 23:59:59 EST" 
[7] "2011-11-06 23:59:59 EST" "2011-11-07 23:59:59 EST" 

y

R> format(toydata$date, "%d-%b") 
[1] "04-Nov" "05-Nov" "06-Nov" "07-Nov" "04-Nov" "05-Nov" "06-Nov" "07-Nov" 

Sin embargo, cuando intento trazar usando ggplot2 usando el siguiente código

R> p <- ggplot(toydata, aes(x = date, y = coef, group = group)) 
R> pq <- p + geom_line(aes(colour = group)) + 
+ scale_x_datetime(major = "1 day", format = "%d-%b") 

I obtener un resultado inesperado:

enter image description here

Como se puede ver, noviembre 6 se duplica. Puedo solucionar este problema simplemente tratando las etiquetas en x como cadenas y no como fechas, pero tengo curiosidad acerca de por qué está sucediendo esto. ¿Me estoy perdiendo algo obvio?

Respuesta

4

Solo especifique tz='EST' y funciona para mí. Cualquiera que sea el valor predeterminado, se repite el 6 de noviembre debido al cambio de horario de verano.

+0

Gracias. Funciona. Solo para aclarar: 'scale_x_datetime (major =" 1 day ", format ="% d-% b ", tz =" EST ")' – griverorz

+0

Puede valer la pena consultar en github para ver si se trata de un error que se ha informado, y si no lo reporta, solo en caso de que sea un problema solucionable. – joran

+0

Sí ... Siempre estoy preocupado por informar cosas de fecha/hora porque hay tantos matices y definitivamente no soy un experto. Creo que el valor predeterminado aquí en algún nivel podría ser mostrar en su zona horaria local, en cuyo caso el 06-Nov repetido podría ser correcto. Estoy en 'América/Los_Angeles' así que si comienzo con una secuencia de tiempos EST que son 24 horas de diferencia (es decir, qué se usa probablemente para los tics) y que cruzan la transición de ahorro de luz diurna, y luego formatee en mi hora local , Me repito 06-Nov también. ... –

Cuestiones relacionadas