Vraag Sommige legendes in een gg-teken uitschakelen


Stel dat ik een voorbeeld heb met meer dan één legende.

mov <- subset(movies, length != "")
(p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point()
)

Ik kan de weergave van alle legendes zoals deze uitschakelen:

(p1 <- p0 + theme(legend.position = "none"))

Passing show_guide = FALSE naar geom_point (vanaf deze vraag) schakelt de vormlegenda uit.

(p2 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point(show_guide = FALSE)
)

Maar wat als ik in plaats daarvan de kleurlegende wil uitschakelen? Er lijkt geen manier om te vertellen te zijn show_guide welke legenda zijn gedrag toepast op. En er is geen show_guide argument voor schalen of esthetiek.

(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

Deze vraag suggereert dat de moderne (sinds ggplot2 v0.9.2) manier om legendes te beheersen met de. is guides functie.

Ik wil zoiets kunnen doen

p0 + guides(
  colour = guide_legend(show = FALSE) 
)

maar guide_legend heeft geen showargument.

Hoe geef ik aan welke legendes worden weergegeven?


168
2018-01-30 12:49


oorsprong


antwoorden:


Je kunt gebruiken guide=FALSE in scale_..._...() om de legende te onderdrukken.

Voor uw voorbeeld zou u moeten gebruiken scale_colour_continuous() omdat length is continue variabele (niet discreet).

(p3 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
   scale_colour_continuous(guide = FALSE) +
   geom_point()
)

Of met behulp van de functie guides() je zou moeten instellen FALSE voor dat element / esthetiek dat je bijvoorbeeld niet als legende wilt verschijnen fill, shape, colour.

p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point()    
p0+guides(colour=FALSE)

BIJWERKEN

Beide geleverde oplossingen werken in nieuw ggplot2 versie 2.0.0 maar movies dataset is niet meer aanwezig in deze bibliotheek. In plaats daarvan moet je een nieuw pakket gebruiken ggplot2movies om die oplossingen te controleren.

library(ggplot2movies)
data(movies)
mov <- subset(movies, length != "")

223
2018-01-30 12:55