Вимкнення деяких легенд у ggplot


221

Припустимо, у мене є ggplot з більш ніж однією легендою.

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

Я можу вимкнути показ усіх таких легенд:

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

Перехід show_guide = FALSEдо geom_point(відповідно до цього питання ) вимикає легенду форми.

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

Але що робити, якщо я хочу вимкнути колірну легенду? Здається, не існує способу розповісти, до show_guideякої легенди застосувати свою поведінку. І show_guideаргументів щодо масштабів чи естетики немає.

(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

Це запитання дозволяє припустити, що сучасний (оскільки ggplot2 v0.9.2) спосіб управління легендами є guidesфункцією.

Я хочу вміти щось подібне робити

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

але guide_legendне має аргументу показу.

Як визначити, які легенди відображатимуться?


6
Після останнього ggplot2оновлення show_guideзастаріле і замінено на show.legend.
PatrickT

Відповіді:


294

Ви можете використовувати guide=FALSEв scale_..._...()для придушення легенди.

Для вашого прикладу слід використовувати, scale_colour_continuous()тому що lengthце неперервна змінна (не дискретна).

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

Або використовуючи функцію, guides()ви повинні встановити FALSEдля того елемента / естетики, який ви не хочете відображати як легенду, наприклад fill,shape , colour.

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

ОНОВЛЕННЯ

Обидва запропоновані рішення працюють у новій ggplot2версії 2.0.0, але moviesнабір даних більше не присутній у цій бібліотеці. Натомість вам потрібно використовувати новий пакет, ggplot2moviesщоб перевірити ці рішення.

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

6
Шкала_colour_continuous (довідник = FALSE) не працює в ggplot2 0.9.3, але напрямні (color = FALSE) вирішують проблему. Дякую велику Дідзіс!
Микола Ненов

1
@NikolayNenov Дивно, адже обидва рішення працюють для мене з ggplot2 0.9.3.1
Didzis Elferts

9
Я хочу видалити легенду про альфа . guides(alpha=FALSE)зробіть трюк. Дякую, Дідзіс.
l0o0

3
Зауважте до себе: якщо у вас є geom_linerange()легенда, а замість рядка зображено хрест, вставте show.legend=FALSEвсередині geom_linerange().
PatrickT

25

Ви можете просто додати show.legend=FALSEдо geom, щоб придушити відповідну легенду

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.