Obwohl ich Hadleys Beitrag in der Google-Gruppe auf POSIXct
und gefunden habe geom_vline
, konnte ich ihn nicht fertigstellen. Ich habe eine Zeitreihe von und möchte zum Beispiel für die Jahre 1998, 2005 und 2010 eine vertikale Linie ziehen. Ich habe es mit ggplot
und qplot
Syntax versucht , aber ich sehe entweder überhaupt keine vertikale Linie oder die vertikale Linie wird beim allerersten vertikalen Raster gezeichnet und die gesamte Serie wird etwas seltsam nach rechts verschoben.
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
Mein Datumsfeld hat das Format "1993-07-01" und ist von Klasse Date
.
r
date
ggplot2
time-series
Matt Bannert
quelle
quelle
Antworten:
Versuchen Sie
as.numeric(mydata$datefield[120])
:Ein einfaches Testbeispiel:
quelle
geom_vline(aes(xintercept=as.numeric(x[c(13, 24)])), linetype=4, colour="black")
es idiomatischer wäre, dhaes
statt zu verwendentmp$
.rlang::last_error()
zu sehen, wo der Fehler aufgetretenSie können dies auch tun,
geom_vline(xintercept = as.numeric(as.Date("2015-01-01")), linetype=4)
wenn die Linie an Ort und Stelle bleiben soll, unabhängig davon, ob sich Ihr Datum in der 120. Zeile befindet oder nicht.quelle
as.POSIXct(as.Date(c("2016-12-01","2017-02-01")))
as.numeric funktioniert bei mir
Code-Ausgabe
quelle