Supongamos que tengo un ggplot con más de una leyenda.
mov <- subset(movies, length != "")
(p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
geom_point()
)
Puedo apagar la visualización de todas las leyendas como esta:
(p1 <- p0 + theme(legend.position = "none"))
Pasar show_guide = FALSEa geom_point(según esta pregunta ) desactiva la leyenda de la forma.
(p2 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
geom_point(show_guide = FALSE)
)
Pero, ¿qué pasa si quiero desactivar la leyenda de color en su lugar? No parece haber una manera de decir a show_guidequé leyenda aplicar su comportamiento. Y no hay show_guideargumento para las escalas o la estética.
(p3 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
scale_colour_discrete(show_guide = FALSE) +
geom_point()
)
# Error in discrete_scale
(p4 <- ggplot(mov, aes(year, rating, shape = mpaa)) +
aes(colour = length, show_guide = FALSE) +
geom_point()
)
#draws both legends
Esta pregunta sugiere que la forma moderna (desde ggplot2 v0.9.2) de controlar las leyendas es con la guidesfunción.
Quiero poder hacer algo como
p0 + guides(
colour = guide_legend(show = FALSE)
)
pero guide_legendno tiene un argumento show.
¿Cómo especifico qué leyendas se muestran?

ggplot2actualización reciente ,show_guideha quedado obsoleto y reemplazado porshow.legend.Respuestas:
Se puede utilizar
guide=FALSEenscale_..._...()la leyenda de supresión.Para su ejemplo, debe usar
scale_colour_continuous()porquelengthes una variable continua (no discreta).O el uso de la función
guides()que debe establecerFALSEpara ese elemento / estética que no desea que aparezca como leyenda, por ejemplo,fill,shape,colour.ACTUALIZAR
Ambas soluciones proporcionadas funcionan en la nueva
ggplot2versión 2.0.0, pero elmoviesconjunto de datos ya no está presente en esta biblioteca. En su lugar, debe usar un nuevo paqueteggplot2moviespara verificar esas soluciones.fuente
guides(alpha=FALSE)Haz el truco. Gracias Didzis.geom_linerange()y la leyenda muestra una cruz en lugar de una línea, inserteshow.legend=FALSEdentro degeom_linerange().Simplemente puede agregar
show.legend=FALSEa geom para suprimir la leyenda correspondientefuente