Я пытаюсь сохранить легенду одного слоя (гладкую) и удалить легенду другого (точка). Я пытался отключить легенды с 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()
Ответы:
из поваренной книги , где bp - ваш ggplot:
Удалить легенду для определенной эстетики (заполнить):
Это также можно сделать при указании масштаба:
Это удаляет все легенды:
источник
theme_bw()
может помешать любым определениям, сделанным с использованиемtheme()
. При использованииtheme_bw()
обязательно добавьте его в график, прежде чем изменять какие-либо другие параметры темы.bp + theme(legend.position="none") + theme_classic()
, легенды возвращаются. Так как это убрать?bp + theme_classic() + theme(legend.position="none")
Там может быть другое решение этого:
Ваш код был:
Вы можете указать
show.legend
параметр после поaes
вызову:тогда соответствующая легенда должна исчезнуть
источник
scale_label
команды (и это не имеет смысла), аguide(label = FALSE)
также не работает. Спасибо!Поскольку вопрос и ответ пользователя 3490026 являются популярным поисковым хитом, я привел воспроизводимый пример и краткую иллюстрацию выдвинутых на данный момент предложений, а также решение, которое явно касается вопроса ОП.
Одна из вещей, которая
ggplot2
делает и которая может сбивать с толку, - это то, что она автоматически смешивает определенные легенды, когда они связаны с одной и той же переменной. Например,factor(gear)
появляется дважды, один разlinetype
и один разfill
, что приводит к объединенной легенде. В отличие от этого,gear
имеет собственную запись легенды, поскольку она не рассматривается так же, какfactor(gear)
. Предлагаемые решения обычно работают хорошо. Но иногда вам может понадобиться переопределить направляющие. Смотрите мой последний пример внизу.Удалить все легенды: @ user3490026
Удалить все легенды: @duhaime
Отключить легенды: @Tjebo
Удалите заливку, чтобы тип линии стал видимым
То же, что и выше, с помощью функции scale_fill_:
А теперь один возможный ответ на запрос ОП
Включите некоторые из некоторых специальных пост-hoc
источник
warnings()
после того, как вы запустили свой код, и вы увидите причины, по которым синяя лента не появляется.se
когда она не вычисляется. Вероятно, стоит того, чтобы на github, но у меня сейчас нет энергии ...Если ваша диаграмма использует
fill
иcolor
эстетику, вы можете удалить легенду с помощью:источник