Sto provando a tracciare più set di dati su uno stesso grafico. Per esempio, di seguito, ho due serie di esperimenti con le impostazioni: "P-0.1" e "P-0.2" come indicato dal fattore B. Per ogni esperimento, ho tre valori di uscita "P", "Q", "O ", come indicato dal fattore A. Ho raggruppato gli esperimenti per colore di riempimento e raggruppato gli output per colore, tipo di linea e forma.Legende multiple con ggplot2
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"))
Il codice sopra disegna la figura in modo corretto, ma io sono sempre neri cerchi nella leggenda per la scala di riempimento, dove mi aspettavo riempito caselle rosse e blu. Come risolvere questo?
Questo funziona per me 'p = p + scale_fill_manual (name = "", i valori = c ("rosso", "blu"), guida = guide_legend (override.aes = aes (forma = 21))) '. Maggiori informazioni [qui] (https://github.com/hadley/ggplot2/issues/857) – Tung
Grazie per aver segnalato questo. Questo funziona. – max
Per ottenere riquadri rossi e blu, è possibile utilizzare 'override.aes = list (shape = 22, size = 5)' – Jaap