2012-02-23 42 views
9

Tengo problemas para agregar una línea vertical a un trazado cuando el eje x es un objeto datetime (POSIXct). Parece que siempre quiere poner la línea en la Época. He aquí un ejemplo:ggplot línea vertical con el eje de fecha

df <- data.frame(x=ymd('2011-01-01')+hours(0:24), y=runif(25)) 
ggplot(df, aes(x=x,y=y)) + geom_point() 

without vertical line

Ahora intento agregar una línea en el tercer tiempo de observación:

ggplot(df, aes(x=x,y=y)) + geom_point() + geom_vline(aes(x=df$x[3])) 

with vertical line

algo que estoy haciendo mal?

Respuesta

3

trate de hacer esto en su lugar:

geom_vline(xintercept = df$x[3]) 
+0

Gracias. Parece que 'xintercept' falta en la lista de estética en los documentos ggplot, y la verborrea habla de' x' en su lugar. =/ –

+0

Sí, eso me sorprendió a mí también. Los documentos en http://had.co.nz/ggplot2/geom_vline.html dicen usar 'aes (x = whatever)', pero todos los ejemplos a continuación usan 'xintercept' – Andrew

+1

usando exactamente @KenWilliams ejemplo I get> ggplot (df, aes (x = x, y = y)) + geom_point() + geom_vline (xintercept = df $ x [3]) Error: tipo de interceptación no válida: debería ser un vector numérico, una función o un nombre de un función. ¿Algunas ideas? –

1
ggplot(df, aes(x=x,y=y)) + geom_point() + geom_vline(aes(xintercept=df$x[3])) 

que quieren xintercept en lugar de x en su geom_vlineaes.

+0

también los resultados 2 y 3 [google serarch] (https://www.google.com/search?sourceid=chrome&client=ubuntu&channel=cs&ie=UTF-8&q=geom_vline+and+date&safe=on) parecen responder a su pregunta. .. – Justin

+0

Gracias por la ayuda. Vi esas páginas antes de enviar esta pregunta, pero no noté el cambio de nombre estético. La estética 'xintercept' falta en los documentos, veré si puedo enviar un parche de documentación. –

+0

Pero no puedo entender qué genera los listados estéticos en los documentos, no parece haber nada en https://github.com/hadley/ggplot2/blob/master/R/geom-vline.r. –

Cuestiones relacionadas