Mehrere Legenden mit ggplot2
Ich versuche, das Grundstück mit mehreren Mengen von Daten, die auf dem gleichen Grundstück. Zum Beispiel unten habe ich zwei Experimente mit Einstellungen: "P-0.1" und "P-0.2" als gekennzeichnet durch Faktor B. Für jedes experiment, ich habe drei output-Werte "P", "Q", "O", wie gekennzeichnet durch Faktor A. habe ich gruppiert die Experimente von Füllfarbe und gruppiert die Ausgänge von Farbe, Linientyp, und Form.
library(ggplot2)
dat <- data.frame(
A = factor(c("O", "O", "P", "P", "Q", "Q", "O", "O", "P", "P", "Q", "Q"), levels=c("O", "O", "P", "P", "Q", "Q","O", "O", "P", "P", "Q", "Q")),
B = factor(c("P-0.1", "P-0.1", "P-0.1", "P-0.1","P-0.1", "P-0.1", "P-0.2", "P-0.2", "P-0.2", "P-0.2", "P-0.2", "P-0.2"), levels = c("P-0.1", "P-0.1", "P-0.1", "P-0.1","P-0.1", "P-0.1", "P-0.2", "P-0.2", "P-0.2", "P-0.2", "P-0.2", "P-0.2")),
X = c( 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1),
Y = c(10, 15, 12, 13, 9, 14, 30, 20, 32, 21, 27, 19)
)
p = ggplot(data=dat, aes(x=X, y=Y, colour=A, size=A, shape=A, linetype=A, fill=B, group=interaction(A,B))) + geom_point() + geom_line() + theme_bw()
p = p + geom_point(size=4, alpha=0) + geom_point(size=4, show.legend=FALSE) + guides(shape = guide_legend(nrow=3, byrow = TRUE, keywidth = 1.5, keyheight = 1), colour = guide_legend(override.aes = list(alpha=1)))
p = p + scale_shape_manual(name="", values=c(21,22,23))
p = p + scale_colour_manual(name="", values=c("#005ccc", "#007700", "#56B4E9"))
p = p + scale_linetype_manual(name="", values=c(0,0,1))
p = p + scale_size_manual(name="", values = c(1, 1, 1))
p = p + scale_fill_manual(name="", values = c("red", "blue"))
Den oben genannten code zeichnet die Figur richtig, aber ich bin immer schwarze Kreise in der Legende für die Füllung Skala, wo ich erwartet wurde gefüllt, rot-und blau-Boxen. Wie man dieses Problem beheben?
- Dies funktioniert für mich
p = p + scale_fill_manual(name = "", values = c("red", "blue"), guide = guide_legend(override.aes = aes(shape = 21)))
. Mehr Informationen hier - Vielen Dank für diesen Hinweis. Dieser funktioniert.
- Zu bekommen red und blau-Boxen, die Sie möglicherweise verwenden möchten
override.aes = list(shape = 22, size = 5)
- Das sieht schon besser aus. Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie gesagt in den Kommentaren, die ich aktualisiert mit
auf das gewünschte Bild. Es sieht so aus: