manually - Eliminar leyendas adicionales en ggplot2
legend.position r (3)
Tengo un marco de datos simple que estoy tratando de hacer una línea combinada y punto usando ggplot2
. Suponiendo que mis datos se vean así:
df <- data.frame(x=rep(1:10,2), y=c(1:10,11:20),
group=c(rep("a",10),rep("b",10)))
Y estoy tratando de hacer una trama:
g <- ggplot(df, aes(x=x, y=y, group=group))
g <- g + geom_line(aes(colour=group))
g <- g + geom_point(aes(colour=group, alpha = .8))
g
El resultado se ve bien con una excepción. Tiene una leyenda extra que muestra el alpha
para mi capa geom_point
.
¿Cómo puedo mantener la leyenda mostrando los colores del grupo, pero no la que muestra mi configuración alfa?
La estética se puede establecer o mapear dentro de una llamada ggplot
.
- Una estética definida dentro de
aes(...)
se mapea a partir de los datos y se crea una leyenda. - Una estética también se puede establecer en un único valor, definiéndola fuera de
aes()
.
En este caso, parece que desea establecer alpha = 0.8
y asignar colour = group
.
Para hacer esto,
Coloque el alpha = 0.8
fuera de la definición de aes()
.
g <- ggplot(df, aes(x = x, y = y, group = group))
g <- g + geom_line(aes(colour = group))
g <- g + geom_point(aes(colour = group), alpha = 0.8)
g
Para cualquier variable mapeada puede suprimir la apariencia de una leyenda usando guide = ''none''
en la scale_...
apropiada scale_...
llamada. p.ej.
g2 <- ggplot(df, aes(x = x, y = y, group = group)) +
geom_line(aes(colour = group)) +
geom_point(aes(colour = group, alpha = 0.8))
g2 + scale_alpha(guide = ''none'')
Que devolverá una trama idéntica
El comentario de EDIT @ Joran es acertado, hice mi respuesta más completa
Para las versiones anteriores de ggplot2 (versiones anteriores a 0.9.2, lanzadas a finales de 2012), esta respuesta debería funcionar:
Intenté esto con un colour_scale
y no funcionó. Parece que el elemento colour_scale_hue
funciona como una función con un parámetro predeterminado TRUE
. scale_colour_hue(legend=FALSE)
y funcionó.
No estoy seguro de si este es el caso para todos los elementos de escala de color en ggplot
Simplemente agregue el código show.legend = F
después de la parte donde no lo desea.
g <- ggplot(df, aes(x=x, y=y, group=group))
g <- g + geom_line(aes(colour=group))
g <- g + geom_point(aes(colour=group, alpha = .8), show.legend = F)