Staram się zachować legendę jednej warstwy (gładką) i usunąć legendę drugiej (punkt). Próbowałem zamknąć legendy za pomocą guides(colour = FALSE)
i geom_point(aes(color = vs), show.legend = FALSE)
.
Edycja : Ponieważ to pytanie i odpowiedzi są popularne, powtarzalny przykład wydaje się w kolejności:
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()
Odpowiedzi:
z książki kucharskiej r , gdzie bp to twój ggplot:
Usuń legendę dla określonej estetyki (wypełnienia):
Można to również zrobić przy określaniu skali:
To usuwa wszystkie legendy:
źródło
theme_bw()
może zakłócać wszelkie definicje wykonane przy użyciutheme()
. Podczas używaniatheme_bw()
pamiętaj, aby dodać go do fabuły, zanim zmienisz inne opcje motywu.bp + theme(legend.position="none") + theme_classic()
, legendy wracają. Jak to usunąć?bp + theme_classic() + theme(legend.position="none")
Może być na to inne rozwiązanie:
Twój kod to:
Można określić
show.legend
parametr po tejaes
rozmowy:odpowiednia legenda powinna zniknąć
źródło
scale_label
polecenia (ani nie ma to sensu), aguide(label = FALSE)
także nie działało. Dzięki!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ładfactor(gear)
pojawia się dwa razy, raz zalinetype
i raz zafill
, co daje połączoną legendę. Natomiastgear
ma własną pozycję legendy, ponieważ nie jest traktowana tak samo jakfactor(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.Usuń wszystkie legendy: @ user3490026
Usuń wszystkie legendy: @duhaime
Wyłącz legendy: @Tjebo
Usuń wypełnienie, aby widoczny był rodzaj linii
To samo co powyżej za pomocą funkcji scale_fill_:
A teraz jedna możliwa odpowiedź na prośbę PO
Włącz niektóre, wyłączając ad-hoc post-hoc
źródło
warnings()
po uruchomieniu kodu, a zobaczysz przyczynę, dla której niebieska wstążka się nie wyświetla.se
gdy nie jest obliczana. Prawdopodobnie warte problemu w github, ale teraz nie mam energii ...Jeśli Twój wykres wykorzystuje zarówno estetykę, jak
fill
icolor
estetykę, możesz usunąć legendę za pomocą:źródło