Как получить вертикальную geom_vline к оси x даты classа?

Хотя я нашел запись Хэдли в группе google на POSIXct и geom_vline , я не мог это сделать. У меня есть временные ряды и хотелось бы сделать вертикальную линию в течение лет 1998, 2005 и 2010 годов, например. Я пробовал с синтаксисом ggplot и qplot , но все же я либо не вижу вертикальной линии вообще, либо вертикальная линия рисуется в самой первой вертикальной сетке, и вся серия смещена несколько странно вправо.

 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 

Поле даты имеет формат «1993-07-01» и относится к classу Date .

    Попробуйте as.numeric(mydata$datefield[120]) :

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

    Простой пример:

     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) если вы хотите, чтобы линия geom_vline(xintercept = as.numeric(as.Date("2015-01-01")), linetype=4) на месте независимо от того, находится ли ваша дата в 120-й строке.

    Давайте будем гением компьютера.