Eliminar leyenda ggplot 2.2
Estoy intentando mantener la leyenda de una capa (suave) y eliminar la leyenda de la otra (punto). Intenté cerrar las leyendas con guides(colour = FALSE)
y geom_point(aes(color = vs), show.legend = FALSE)
.
Editar : Como esta pregunta y sus respuestas son populares, parece necesario un ejemplo reproducible:
library(ggplot2)
ggplot(data = mtcars, aes(x = mpg, y = disp, group = gear)) +
geom_point(aes(color = vs)) +
geom_point(aes(shape = factor(cyl))) +
geom_line(aes(linetype = factor(gear))) +
geom_smooth(aes(fill = factor(gear), color = gear)) +
theme_bw()
de r cookbook , donde bp es tu ggplot:
Eliminar leyenda para una estética particular (relleno):
bp + guides(fill="none")
También se puede hacer al especificar la escala:
bp + scale_fill_discrete(guide="none")
Esto elimina todas las leyendas:
bp + theme(legend.position="none")
Podría haber otra solución para esto:
su código era:
geom_point(aes(..., show.legend = FALSE))
Puede especificar el show.legend
parámetro después de la aes
llamada:
geom_point(aes(...), show.legend = FALSE)
entonces la leyenda correspondiente debería desaparecer
Como la pregunta y la respuesta del usuario3490026 son uno de los principales resultados de búsqueda, he creado un ejemplo reproducible y una breve ilustración de las sugerencias hechas hasta ahora, junto con una solución que aborda explícitamente la pregunta del OP.
Una de las cosas que ggplot2
hace y que puede resultar confusa es que combina automáticamente ciertas leyendas cuando están asociadas con la misma variable. Por ejemplo, factor(gear)
aparece dos veces, una para linetype
y otra para fill
, lo que da como resultado una leyenda combinada. Por el contrario, gear
tiene su propia entrada de leyenda, ya que no se trata de la misma manera que factor(gear)
. Las soluciones ofrecidas hasta ahora suelen funcionar bien. Pero en ocasiones, es posible que necesites anular las guías. Vea mi último ejemplo en la parte inferior.
# reproducible example:
library(ggplot2)
p <- ggplot(data = mtcars, aes(x = mpg, y = disp, group = gear)) +
geom_point(aes(color = vs)) +
geom_point(aes(shape = factor(cyl))) +
geom_line(aes(linetype = factor(gear))) +
geom_smooth(aes(fill = factor(gear), color = gear)) +
theme_bw()
Eliminar todas las leyendas: @user3490026
p + theme(legend.position = "none")
Eliminar todas las leyendas: @duhaime
p + guides(fill = "none", color = "none", linetype = "none", shape = "none")
Desactivar leyendas: @Tjebo
ggplot(data = mtcars, aes(x = mpg, y = disp, group = gear)) +
geom_point(aes(color = vs), show.legend = FALSE) +
geom_point(aes(shape = factor(cyl)), show.legend = FALSE) +
geom_line(aes(linetype = factor(gear)), show.legend = FALSE) +
geom_smooth(aes(fill = factor(gear), color = gear), show.legend = FALSE) +
theme_bw()
Eliminar el relleno para que el tipo de línea sea visible
p + guides(fill = "none")
Igual que arriba a través de la scale_fill_discrete
función:
p + scale_fill_discrete(guide = "none")
Y ahora una posible respuesta a la solicitud del OP:
"para mantener la leyenda de una capa (suave) y eliminar la leyenda de la otra (punto)"
Encienda algunos y desactívelos ad-hoc post-hoc
p + guides(fill = guide_legend(override.aes = list(color = NA)),
color = "none",
shape = "none")