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ą ggplot2
i 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 linetype
i raz za fill
, co daje połączoną legendę. Natomiast gear
ma 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)