Ponieważ pytanie i odpowiedź użytkownika 3490026 są hitem wyszukiwania, podałem powtarzalny przykład i krótką ilustrację dotychczasowych sugestii wraz z rozwiązaniem, które wyraźnie odnosi się do pytania PO.
Jedną z rzeczy, które działają ggplot2i mogą być mylące, jest to, że automatycznie łączy pewne legendy, gdy są one powiązane z tą samą zmienną. Na przykład factor(gear)pojawia się dwa razy, raz za linetypei raz za fill, co daje połączoną legendę. Natomiast gearma własną pozycję legendy, ponieważ nie jest traktowana tak samo jak factor(gear). Dotychczasowe rozwiązania zwykle działają dobrze. Ale czasami może być konieczne zastąpienie przewodników. Zobacz mój ostatni przykład na dole.
# 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()

Usuń wszystkie legendy: @ user3490026
p + theme(legend.position = "none")
Usuń wszystkie legendy: @duhaime
p + guides(fill = FALSE, color = FALSE, linetype = FALSE, shape = FALSE)
Wyłącz legendy: @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()
Usuń wypełnienie, aby widoczny był rodzaj linii
p + guides(fill = FALSE)
To samo co powyżej za pomocą funkcji scale_fill_:
p + scale_fill_discrete(guide = FALSE)
A teraz jedna możliwa odpowiedź na prośbę PO
„aby zachować legendę jednej warstwy (gładką) i usunąć legendę drugiej (punkt)”
Włącz niektóre, wyłączając ad-hoc post-hoc
p + guides(fill = guide_legend(override.aes = list(color = NA)),
color = FALSE,
shape = FALSE)
