Я пытаюсь сохранить легенду о одном слое (плавно) и удалить легенду другого (точки). Я попытался отключить легенды с помощью guides(colour = FALSE)
и geom_point(aes(color = vs), show.legend = FALSE)
.
Изменить: поскольку этот вопрос и его ответы популярны, воспроизводимый пример выглядит следующим образом:
library(ggplot2)
ggplot(data = mtcars, aes(x = mpg, y = disp, group = gear)) +
geom_point(aes(color = vs)) +
geom_point(aes(shape = factor(cyl))) +
geom_line(aes(linetype = factor(gear))) +
geom_smooth(aes(fill = factor(gear), color = gear)) +
theme_bw()
из r cookbook, где bp - ваш ggplot:
Удалить легенду для конкретной эстетической (заливки):
bp + guides(fill=FALSE)
Это также можно сделать при указании масштаба:
bp + scale_fill_discrete(guide=FALSE)
Это удаляет все легенды:
bp + theme(legend.position="none")
theme_bw()
может мешать любым определениям, выполненным с помощью theme()
. При использовании theme_bw()
обязательно добавьте его в график, прежде чем изменять какие-либо другие параметры темы.
Это может быть другое:
Ваш код:
geom_point(aes(..., show.legend = FALSE))
Вы можете указать параметр show.legend
после вызова aes
:
geom_point(aes(...), show.legend = FALSE)
то соответствующая легенда должна исчезнуть
Если ваша диаграмма использует как fill
и color
эстетику, вы можете удалить легенду с помощью:
+ guides(fill=FALSE, color=FALSE)
Поскольку ответ на вопрос и user3490026 является лучшим поисковым ударом, я сделал воспроизводимый пример и краткую иллюстрацию предложений, сделанных до сих пор, вместе с решением, которое явно решает вопрос OP.
Одна из вещей, которые делает ggplot2
и которая может сбивать с толку, заключается в том, что она автоматически смешивает определенные легенды, когда они связаны с одной и той же переменной. Например, factor(gear)
появляется дважды, один раз для linetype
и один раз для fill
, что приводит к объединенной легенде. Напротив, gear
имеет свою собственную запись легенды, поскольку она не рассматривается как то же, что и factor(gear)
. Предлагаемые решения обычно работают хорошо. Но иногда вам может понадобиться переопределить направляющие. Посмотрите мой последний пример внизу.
# reproducible example:
library(ggplot2)
p <- ggplot(data = mtcars, aes(x = mpg, y = disp, group = gear)) +
geom_point(aes(color = vs)) +
geom_point(aes(shape = factor(cyl))) +
geom_line(aes(linetype = factor(gear))) +
geom_smooth(aes(fill = factor(gear), color = gear)) +
theme_bw()
Удалить все легенды: @user3490026
p + theme(legend.position = "none")
Удалить все легенды: @duhaime
p + guides(fill = FALSE, color = FALSE, linetype = FALSE, shape = FALSE)
Отключить легенды: @Tjebo
ggplot(data = mtcars, aes(x = mpg, y = disp, group = gear)) +
geom_point(aes(color = vs), show.legend = FALSE) +
geom_point(aes(shape = factor(cyl)), show.legend = FALSE) +
geom_line(aes(linetype = factor(gear)), show.legend = FALSE) +
geom_smooth(aes(fill = factor(gear), color = gear), show.legend = FALSE) +
theme_bw()
Удалите заливку, чтобы вид линии стал видимым
p + guides(fill = FALSE)
То же, что и выше, через функцию scale_fill_:
p + scale_fill_discrete(guide = FALSE)
И теперь один возможный ответ на запрос OP
"сохранить легенду о одном слое (гладко) и удалить легенду о другой (точке)",
Поверните некоторые на некоторых внеочередных
p + guides(fill = guide_legend(override.aes = list(color = NA)),
color = FALSE,
shape = FALSE)
warnings()
после того, как вы запустили свой код, и вы увидите причины, по которым голубая лента не появляется.