如何获得一个垂直的geom_vline到类date的x轴?

即使我发现在POSIXctgeom_vline的谷歌组中的哈德利的post,我无法完成。 例如,我有一个时间序列,想要绘制1998年,2005年和2010年的垂直线。 我尝试了ggplotqplot语法,但是我仍然没有看到垂直线,或者垂直线是在第一个垂直网格上绘制的,整个系列有点奇怪地向右移动。

 gg <- ggplot(data=mydata,aes(y=somevalues,x=datefield,color=category)) + layer(geom="line") gg + geom_vline(xintercept=mydata$datefield[120],linetype=4) # returns just the time series plot I had before, # interestingly the legend contains dotted vertical lines 

我的date字段格式为“1993-07-01”,类别为Date

尝试as.numeric(mydata$datefield[120])

 gg + geom_vline(xintercept=as.numeric(mydata$datefield[120]), linetype=4) 

一个简单的testing例子:

 library("ggplot2") tmp <- data.frame(x=rep(seq(as.Date(0, origin="1970-01-01"), length=36, by="1 month"), 2), y=rnorm(72), category=gl(2,36)) p <- ggplot(tmp, aes(x, y, colour=category)) + layer(geom="line") + geom_vline(aes(xintercept=as.numeric(x[c(13, 24)])), linetype=4, colour="black") print(p) 

geom_vline示例图

你也可以做geom_vline(xintercept = as.numeric(as.Date("2015-01-01")), linetype=4)如果你想让这行保持原位,不pipe你的date是否在第120行。