Ich habe einen Datenrahmen mit zwei verschiedenen Variablen y1
und y2
zu bauen: Ich plotten mag beide mit geom_line
, mit zwei verschiedenen Linientypen (color
ist bereits vergeben durch eine andere Variable). Ich interessiere mich nicht für Lösungen mit melt
oder gather
: Ich habe gute Gründe, das nicht mit meinen echten Daten zu tun. Stattdessen versuche ich meine Legende von Hand zu bauen:Fehler beim Linientyp Legende manuell in ggplot
library(ggplot2)
x <- rep(seq(0, 1, len = 10), times = 3)
group <- gl(n = 3, k = 10, labels = c("A", "B", "C"))
foo <- data.frame(x = x, y1 = x^2, y2 = x^3, group = group)
p <- ggplot(data = foo, aes(x = x, color = group)) +
geom_line(data = foo, aes(y = y1), linetype = "type1") +
geom_line(data = foo, aes(y = y2), linetype = "type2") +
guides(color = FALSE) +
scale_linetype_manual(name = "variable",
values = c("type1" = "solid", "type2" = "dashed"),
labels = c("y1", "y2")) +
facet_wrap(~ group)
p
ist jedoch ggplot
mir einen seltsamen Fehler geben:
> Error in grid.Call.graphics(L_lines, x$x, x$y, index, x$arrow) :
invalid line type: must be length 2, 4, 6 or 8
Was geschieht? Kannst du mir helfen?
Great! Kannst du auch den Grund erklären, warum 'Linientype' in' Aes' gehen muss? Ich dachte, dass 'aes' nur Datenrahmenvariablen auf die Ästhetik des aktuellen 'geom' (hier' geom_line') abbildet. Ich muss mich jedoch irren, weil "type1" und "type2" nicht Variablen im aktuellen Datenrahmen sind. – DeltaIV
All die Dinge, die ich über ggplot2-Legenden weiß, stammen von http://www.cookbook-r.com/Graphs/ Legends_ (ggplot2) Und ich weiß, wie sie es benutzen .. aber warum das so sein muss: Entschuldigung, ich bin kein Experte für ggplot2 Ich kenne deine Antwort, weil ich vor ein paar Tagen die gleichen Probleme hatte. –
@DeltaIV Wenn Sie eine Legende benötigen, benötigen Sie eine zugrunde liegende Zuordnung. 'aes' wird normalerweise verwendet, um Spalten eines dat.frame zuzuordnen, aber Sie können alles zuordnen (Transformationen der data.frame-Spalten, Vektoren in der übergeordneten Umgebung) , oder Variablen, die Sie in 'aes' erstellen. – Roland