Поскольку вопрос и ответ пользователя 3490026 являются популярным поисковым хитом, я привел воспроизводимый пример и краткую иллюстрацию выдвинутых на данный момент предложений, а также решение, которое явно касается вопроса ОП.
Одна из вещей, которая 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)
А теперь один возможный ответ на запрос ОП
«сохранить легенду одного слоя (гладкой) и удалить легенду другого (точки)»
Включите некоторые из некоторых специальных пост-hoc
p + guides(fill = guide_legend(override.aes = list(color = NA)),
color = FALSE,
shape = FALSE)