10
votes

I'm having some trouble adding a vertical line to a plot when the x-axis is a datetime (POSIXct) object. It seems to always want to put the line at the Epoch. Here's an example:

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

Now I try to add a line at the third observation time:

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

with vertical line

Something I'm doing wrong?

2

2 Answers

5
votes

Try doing this instead:

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

you want xintercept rather than x in your geom_vline aes.