Несмотря на то, что я нашел сообщение Хэдли в группе 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" и является классным Date
.
r
date
ggplot2
time-series
Мэтт Баннерт
источник
источник
Ответы:
Попробуйте
as.numeric(mydata$datefield[120])
:Простой тестовый пример:
источник
geom_vline(aes(xintercept=as.numeric(x[c(13, 24)])), linetype=4, colour="black")
было бы более идиоматично, то есть использоватьaes
вместоtmp$
.rlang::last_error()
чтобы узнать, где произошла ошибка. ''Вы также можете сделать это,
geom_vline(xintercept = as.numeric(as.Date("2015-01-01")), linetype=4)
если хотите, чтобы линия оставалась на месте, независимо от того, находится ли ваша дата в 120-й строке.источник
as.POSIXct(as.Date(c("2016-12-01","2017-02-01")))
as.numeric мне подходит
вывод кода
источник