Wie man schön ein ggplot2 (manuell) mit Anmerkungen versehen
Frage
ggplot2
Verwenden wir normalerweise geom_text
und so etwas wie position=jitter
verwenden, um meine Plots mit Anmerkungen versehen.
Allerdings - für ein schönes Grundstück I findet oft lohnt es sich manuell zu annotieren. wie folgt:
data2 <- structure(list(type = structure(c(5L, 1L, 2L, 4L, 3L, 5L, 1L,
2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L), .Label = c("EDS",
"KIU", "LAK", "MVH", "NA*"), class = "factor"), value = c(0.9,
0.01, 0.01, 0.09, 0, 0.8, 0.05, 0, 0.15, 0, 0.41, 0.04, 0.03,
0.52, 0, 0.23, 0.11, 0.02, 0.64, 0.01), time = c(3L, 3L, 3L,
3L, 3L, 6L, 6L, 6L, 6L, 6L, 15L, 15L, 15L, 15L, 15L, 27L, 27L,
27L, 27L, 27L), year = c(2008L, 2008L, 2008L, 2008L, 2008L, 2007L,
2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L,
2006L, 2006L, 2006L, 2006L, 2006L)), .Names = c("type", "value",
"time", "year"), row.names = c(1L, 3L, 4L, 5L, 6L, 7L, 9L, 10L,
11L, 12L, 13L, 15L, 16L, 17L, 18L, 19L, 21L, 22L, 23L, 24L), class = "data.frame")
ggplot(data2, aes(x=time, y=value, group=type, col=type))+
geom_line()+
geom_point()+
theme_bw()+
annotate("text", x=6, y=0.9, label="this is a wrong color")+
annotate("text", x=15, y=0.6, label="this is a second annotation with a wrong color")
Das Problem ist, dass ich nicht die Textanmerkungen Farbe bekommen kann die Linienfarbe entsprechen. Ich nehme an, ich könnte dieses Problem beheben mit einem manuellen Skala, aber ich hoffe, es gibt einen besseren Weg?
Lösung
Wenn Sie geom_text () anstelle von annotate () können Sie eine Gruppe Farbe zu Ihrem Grundstück passieren können:
ggplot(data2, aes(x=time, y=value, group=type, col=type))+
geom_line()+
geom_point()+
theme_bw() +
geom_text(aes(7, .9, label="correct color", color="NA*")) +
geom_text(aes(15, .6, label="another correct color!", color="MVH"))
Verwendung So beschriften () es sieht wie folgt aus: alt text http://www.cerebralmastication.com/wp-content/uploads/2010/ 03 / before.png
dann nach der Verwendung von geom_text () es wie folgt aussieht: alt text http://www.cerebralmastication.com/wp-content/uploads/2010/ 03 / after.png
Andere Tipps
Ich hatte ein ähnliches Problem und löste es mit JD Langer Antwort. Aber als ein Ergebnis von ggplot2
auf Version 0.9.0 zu aktualisieren Ich habe bemerkt, dass alle geom_text()
calls auf den Stellplätzen etwas unscharf gemacht werden.
Dank kohske ich, dass dieser Code entdeckt
ggplot(data2, aes(x=time, y=value, group=type, col=type))+
geom_line()+
geom_point()+
theme_bw() +
geom_text(aes(7, .9, label="correct color", color="NA*")) +
geom_text(aes(15, .6, label="another correct color!", color="MVH"))
zeichnet die geom_text nrow(data2)
times!
Der richtige Weg, um Daten an geom_text Versorgung ist eine andere data.frame Gebäudekoordinaten, Etiketten und Farben für die Saiten halten Sie werden aufgetragen werden soll:
data2.labels <- data.frame(
time = c(7, 15),
value = c(.9, .6),
label = c("correct color", "another correct color!"),
type = c("NA*", "MVH")
)
ggplot(data2, aes(x=time, y=value, group=type, col=type))+
geom_line()+
geom_point()+
theme_bw() +
geom_text(data = data2.labels, aes(x = time, y = value, label = label))