Suponha que eu tenha um ggplot com mais de uma legenda.
mov <- subset(movies, length != "")
(p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
geom_point()
)
Eu posso desligar a exibição de todas as lendas como esta:
(p1 <- p0 + theme(legend.position = "none"))
Passar show_guide = FALSE
para geom_point
(conforme esta pergunta ) desativa a legenda da forma.
(p2 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
geom_point(show_guide = FALSE)
)
Mas e se eu quiser desativar a legenda das cores? Não parece haver uma maneira de dizer a show_guide
qual lenda aplicar seu comportamento. E não há show_guide
argumento para escalas ou 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 pergunta sugere que a maneira moderna (desde ggplot2 v0.9.2) de controlar legendas está com a guides
função
Eu quero ser capaz de fazer algo como
p0 + guides(
colour = guide_legend(show = FALSE)
)
mas guide_legend
não tem argumento de show.
Como especifico quais legendas são exibidas?
ggplot2
atualização recente ,show_guide
foi preterido e substituído porshow.legend
.Respostas:
Você pode usar na lenda suprimir.
guide=FALSE
scale_..._...()
Para o seu exemplo, você deve usar
scale_colour_continuous()
porquelength
é uma variável contínua (não discreta).Ou utilizando a função
guides()
você deve definirFALSE
para esse elemento / estética que você não deseja que apareça como lenda, por exemplo,fill
,shape
,colour
.ATUALIZAR
As duas soluções fornecidas funcionam na nova
ggplot2
versão 2.0.0, mas omovies
conjunto de dados não está mais presente nesta biblioteca. Em vez disso, você precisa usar um novo pacoteggplot2movies
para verificar essas soluções.fonte
guides(alpha=FALSE)
Faça o truque. Obrigado, Didzis.geom_linerange()
e a legenda estiver mostrando uma cruz em vez de uma linha, insirashow.legend=FALSE
dentro dogeom_linerange()
.Você pode simplesmente adicionar
show.legend=FALSE
ao geom para suprimir a legenda correspondentefonte