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