remove manually guides ggplot custom r ggplot2 legend

manually - legend.position r



Eliminar la leyenda ggplot 2.2 (4)

Estoy tratando de mantener la leyenda de una capa (suave) y eliminar la leyenda de la otra (punto). He intentado apagar las leyendas con guides(colour = FALSE) y geom_point(aes(color = vs), show.legend = FALSE) .

Editar : como esta pregunta y sus respuestas son populares, un ejemplo reproducible parece en orden:

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()


Como la pregunta y la respuesta del usuario 3490026 son un éxito de búsqueda principal, he hecho 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 hace ggplot2 y que puede ser confuso es que combina automáticamente ciertas leyendas cuando están asociadas con la misma variable. Por ejemplo, el factor(gear) aparece dos veces, una para linetype de linetype y otra para fill , lo que da como resultado una leyenda combinada. Por el contrario, el gear tiene su propia entrada de leyenda ya que no se trata igual que el factor(gear) . Las soluciones ofrecidas hasta ahora suelen funcionar bien. Pero ocasionalmente, es posible que deba anular las guías. Vea mi último ejemplo al final.

# 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 = FALSE, color = FALSE, linetype = FALSE, shape = FALSE)

Desactiva las 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()

Elimine el relleno para que el tipo de línea sea visible

p + guides(fill = FALSE)

Igual que el anterior a través de la función scale_fill_:

p + scale_fill_discrete(guide = FALSE)

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 fuera de algunos ad-hoc post-hoc

p + guides(fill = guide_legend(override.aes = list(color = NA)), color = FALSE, shape = FALSE)


Puede haber otra solución para esto:
Tu código fue:

geom_point(aes(..., show.legend = FALSE))

Puede especificar el parámetro show.legend después de la llamada aes :

geom_point(aes(...), show.legend = FALSE)

entonces la leyenda correspondiente debería desaparecer


Si su gráfico usa estética de fill y color , puede eliminar la leyenda con:

+ guides(fill=FALSE, color=FALSE)


del libro de cocina r , donde bp es tu ggplot:

Eliminar la leyenda de una estética particular (relleno):

bp + guides(fill=FALSE)

También se puede hacer al especificar la escala:

bp + scale_fill_discrete(guide=FALSE)

Esto elimina todas las leyendas:

bp + theme(legend.position="none")