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 = FALSE
a 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_guide
qué leyenda aplicar su comportamiento. Y no hay show_guide
argumento 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 guides
función.
Quiero poder hacer algo como
p0 + guides(
colour = guide_legend(show = FALSE)
)
pero guide_legend
no tiene un argumento show.
¿Cómo especifico qué leyendas se muestran?
ggplot2
actualización reciente ,show_guide
ha quedado obsoleto y reemplazado porshow.legend
.Respuestas:
Se puede utilizar
guide=FALSE
enscale_..._...()
la leyenda de supresión.Para su ejemplo, debe usar
scale_colour_continuous()
porquelength
es una variable continua (no discreta).O el uso de la función
guides()
que debe establecerFALSE
para ese elemento / estética que no desea que aparezca como leyenda, por ejemplo,fill
,shape
,colour
.ACTUALIZAR
Ambas soluciones proporcionadas funcionan en la nueva
ggplot2
versión 2.0.0, pero elmovies
conjunto de datos ya no está presente en esta biblioteca. En su lugar, debe usar un nuevo paqueteggplot2movies
para 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=FALSE
dentro degeom_linerange()
.Simplemente puede agregar
show.legend=FALSE
a geom para suprimir la leyenda correspondientefuente