Wie kann ich überzeugen, ggplot2 geom_text Etikett angegebenen Datum in einem Zeitdiagramm?
Ich bin mit ggplot2 zeichnen einfache Linien-charts von Zeitreihen-Daten. Eine Schwierigkeit, die ich habe, laufen in der Etikettierung bestimmter Punkte der entsprechenden x-Achsen-Werte, d.h. Termine.
library(ggplot2)
library(scales)
date <- c("2011-09-19","2011-09-20","2011-09-21",
"2011-09-22","2011-09-23","2011-09-26","2011-09-27")
price <- c(100,110,105,115,120,115,125)
tmp <- data.frame(date,price)
tmp$date <- as.Date(tmp$date)
p <- ggplot(tmp,aes(tmp$date,tmp$price))
p <- p + xlab("Date")
p <- p + ylab("Price")
p <- p + layer(geom = "line")
p <- p + opts(title="Simple price plot")
print(p)
Was ich möchte zu tun ist, fügen Sie eine annotation zu einem bestimmten Datum, was ein maximum oder ein minimum mit dem Wert oder etwas anderes beachten. Bisher haben alle Permutationen von geom_text das ich verwendet habe, haben nicht den Effekt, den ich will (oder gar nichts nützlich). Es gibt ein paar Fragen, die auf dieser auf, SO doch die meisten scheinen im Zusammenhang zu scatter-Diagramme eher als Zeit-Serie; ich habe nicht erfolgreich gewesen bei dem Versuch, diese anzupassen. Ich habe auch einige Zeit mit der Dokumentation, aber mein Verständnis ist noch begrenzt. Alle Hinweise wären sehr willkommen.
InformationsquelleAutor SlowLearner | 2011-09-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen von text zu
ggplot
verwendengeom_text
:Methode 1: Fügen Sie eine Spalte mit Beschriftungen auf Ihre
data.frame
:Methode 2: Fügen Sie ein spezifisches label:
p <- ggplot(tmp,aes(date, price, label=date)) + geom_line() + geom_text(data=tmp[which.max(tmp[,2]), ], label="Max",vjust=-1)
- und follow-up mitp <- p + geom_text(data=tmp[which.min(tmp[,2]), ], label="Min",vjust=1
. Ich arbeite immer noch meinen Weg um das einfügen der tatsächlichen max/min-Wert. Ich verwirrt durch die unterschiedlichen Strukturen, wie der Zugang zu Ihnen und die Pakete machen oder akzeptieren Sie diese nicht!Im Fall von
ggplot
es ist straight-forward: die Daten-Struktur muss immer eine Datenverbindung.frame. Sie haben auch nicht erstellen Sie eine separate Schicht für jedes label. Ihre einfachste option ist die Schaffung eines einheitlichen Daten.Rahmen mit der Position und den text für jedes Etikett, und übergeben Sie, in einer einzigen Schicht zu ggplot.Ich habe versucht die Kennzeichnung eine Dichte Handlung mit
ggplot(tmp,aes(x=price,label=date)) + geom_density() + geom_text(data=tmp[3, ], label="Something of note", vjust=1)
aber dies gab die Fehlermeldung "Fehler: geom_text erfordert die folgenden fehlenden ästhetik: "y", die scheint, als ob es könnte im Zusammenhang mit der stat in irgendeiner Weise?Es klingt wie Sie Ihre Daten nicht über eine y-position. Sie müssen entweder fügen Sie einen y-position manuell für das label, oder verwenden Sie
stat-density
und zuordnen der y-Wert für eine angegebene Statistik.In retrospect, scheint auf der Hand...! Danke, es hat funktioniert.
InformationsquelleAutor Andrie