Mimo że znalazłem post Hadley w grupie google na POSIXct
i geom_vline
nie mogłem tego zrobić. Mam szereg czasowy od i chciałbym narysować pionową linię na przykład dla lat 1998, 2005 i 2010. Próbowałem ze składnią ggplot
i qplot
, ale nadal albo nie widzę żadnej pionowej linii, albo pionowa linia jest rysowana na pierwszej pionowej siatce, a cała seria jest nieco dziwnie przesunięta w prawo.
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
Moje pole daty ma format „1993-07-01” i jest klasowe Date
.
r
date
ggplot2
time-series
Matt Bannert
źródło
źródło
Odpowiedzi:
Spróbuj
as.numeric(mydata$datefield[120])
:Prosty przykład testu:
źródło
geom_vline(aes(xintercept=as.numeric(x[c(13, 24)])), linetype=4, colour="black")
byłoby bardziej idiomatycznie, czyli używającaes
zamiasttmp$
.rlang::last_error()
aby zobaczyć, gdzie wystąpił błąd. ''Możesz również zrobić,
geom_vline(xintercept = as.numeric(as.Date("2015-01-01")), linetype=4)
jeśli chcesz, aby linia pozostała na miejscu, niezależnie od tego, czy Twoja data znajduje się w 120. wierszu.źródło
as.POSIXct(as.Date(c("2016-12-01","2017-02-01")))
as.numeric działa dla mnie
wyjście kodu
źródło