Отключение некоторых легенд в 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.
Как указать, какие легенды будут отображаться?
Ответы
Ответ 1
Вы можете использовать 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)
UPDATE
Оба предоставленные решения работают в новом ggplot2
версии 2.0.0, но movies
набор данных больше не присутствует в этой библиотеке. Вместо этого вам нужно использовать новый пакет ggplot2movies
для проверки этих решений.
library(ggplot2movies)
data(movies)
mov <- subset(movies, length != "")