Отключение некоторых легенд в ggplot

Предположим, у меня есть 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 не имеет аргумента show.

Как указать, какие легенды будут отображаться?

Вы можете использовать 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, но dataset для movies больше не присутствует в этой библиотеке. Вместо этого вам нужно использовать новый пакет ggplot2movies для проверки этих решений.

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

Вы можете просто добавить show.legend=FALSE в geom для подавления соответствующей легенды

  • Альтернатива Python xrange для R ИЛИ как петляться над большим набором данных lazilly?
  • R shiny переход реагирует на selectInput выбор
  • count количество строк в кадре данных в R на основе группы
  • Есть ли более элегантный способ конвертировать двузначные годы в четырехзначные годы с lubridate?
  • Разница между скобками и двойной скобкой ] для доступа к элементам списка или кадра данных
  • Схемы Санки в R?
  • Рассчитать среднее значение группы (или другую итоговую статистику) и присвоить исходные данные
  • Как определить операторы подмножества для classа S4?
  • Как отображать только целые значения на оси с помощью ggplot2
  • dplyr - mutate: использовать имена динамических переменных
  • Преобразуйте столбец данных в 1 или 0 для значений «истина» / «ложь» и назначьте в dataframe
  • Давайте будем гением компьютера.