Mit geom_rect für Zeitreihen Schattierung in R
Ich bin versucht zu schattieren, einen bestimmten Abschnitt einer Zeitreihe plot (ein bisschen wie in der Rezession-shading - ähnlich wie die Grafik unten dieser Artikel auf Rezession Schattierung in excel). Ich habe ein kleines, vielleicht ungeschickt, Beispiel zu illustrieren.
Ich erstelle zuerst eine Zeit-Serie, zeichnen Sie es mit ggplot2 und dann verwenden möchten geom_rect um die Schattierung. Aber ich muss etwas falsch in der Argumentation.
a<-rnorm(300)
a_ts<-ts(a, start=c(1910, 1), frequency=12)
a_time<-time(a_ts)
a_series<-ts.union(big=a_ts, month=a_time)
a_series_df<-as.data.frame(a_series)
ggplot(a_series)+
geom_line(mapping=aes_string(x="month", y="big"))+
geom_rect(
fill="red",alpha=0.5,
mapping=aes_string(x="month", y="big"),
xmin=as.numeric(as.Date(c("1924-01-01"))),
xmax=as.numeric(as.Date(c("1928-12-31"))),
ymin=0,
ymax=2
)
Beachten Sie, dass habe ich auch schon versucht, das hat auch nicht funktioniert.
geom_rect(
fill="red",alpha=0.5,
mapping=aes_string(x="month", y="big"),
aes(
xmin=as.numeric(as.Date(c("1924-01-01"))),
xmax=as.numeric(as.Date(c("1928-12-31"))),
ymin=0,
ymax=2)
)
InformationsquelleAutor toksing | 2015-04-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Code funktioniert gut, die Konvertierung in Dezimalzahl Datum ist erforderlich für xmin und xmax, siehe unten, erfordert lubridate Paket.
Cleaner version, Schattierung gezeichnet, zuerst also die Zeile die Farbe ändert sich nicht.
aes()
übergeben wurde, direkt an jede geometrie, und nicht zuggplot()
. Wierdness erfolgt, wenn Sie unsaes(x=Date,...)
zuggplot()
und verwendengeom_rect()
mit anderen geom...es wird über die Reihenfolge des Zeichnens, ich könnte aes-innen ggplot und Handlungsstränge dann rect, aber dann sind die Linien werden hinter dem rect. Natürlich könnten wir das alpha. Vorlieben.
Ok, um genau zu sein, Wenn Sie
aes()
zuggplot()
Sie bereitstellen müssen alle Variablen in rufen, umaes()
in die Daten übergebengeom_rect()
und die Klassen der Felder müssen konsistent sein. Viel leichter zu bewegen, den Aufrufaes()
zu den einzelnen geoms als Konstrukt der benötigten Variablen mit den richtigen Formaten in den Daten-frame übergebengeom_rect()
.InformationsquelleAutor zx8754
Sein ein bisschen einfacher mit
annotate
und beachten Sie auch, dass die Grenzen für die rectange kann angegeben werden, wie gezeigt:Diese auch funktionieren würde:
Entweder man gibt diese:
annotate("rect",...)
nimmt im Rahmen parameter? Ich kann nicht finden die Dokumentation für diese. Ich werde versuchen, nur ein rotes Rechteck mit nur die Grenze, ohne Füllung.Verwenden
col=
stattfill=
.Ich landete mit 4
annotate("segment",...)
. Trotzdem danke, Ill versuchen Sie es für die zukünftige Verwendung.InformationsquelleAutor G. Grothendieck
Verwenden
geom_rect
definieren Sie Ihre Rechteck-Koordinate durch einedata.frame
:Dann geben Sie
ggplot
Ihre Daten und die Schattendata.frame
:InformationsquelleAutor Colonel Beauvel