Załóżmy, że mam ggplot z więcej niż jedną legendą.
mov <- subset(movies, length != "")
(p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
geom_point()
)
Mogę wyłączyć wyświetlanie wszystkich legend w ten sposób:
(p1 <- p0 + theme(legend.position = "none"))
Przejście show_guide = FALSE
do geom_point
(jak na to pytanie ) wyłącza legendę kształtu.
(p2 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
geom_point(show_guide = FALSE)
)
Ale co jeśli zamiast tego chcę wyłączyć legendę kolorów? Wydaje się, że nie ma sposobu, aby powiedzieć, do show_guide
której legendy zastosować swoje zachowanie. I nie ma show_guide
argumentów za skalami ani estetyką.
(p3 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
scale_colour_discrete(show_guide = FALSE) +
geom_point()
)
# Error in discrete_scale
(p4 <- ggplot(mov, aes(year, rating, shape = mpaa)) +
aes(colour = length, show_guide = FALSE) +
geom_point()
)
#draws both legends
To pytanie sugeruje, że nowoczesnym (od ggplot2 v0.9.2) sposobem kontrolowania legend jest guides
funkcja.
Chcę być w stanie zrobić coś takiego
p0 + guides(
colour = guide_legend(show = FALSE)
)
ale guide_legend
nie ma argumentu show.
Jak określić, które legendy mają być wyświetlane?
ggplot2
aktualizacjishow_guide
został wycofany i zastąpiony przezshow.legend
.Odpowiedzi:
Można użyć
guide=FALSE
wscale_..._...()
celu powstrzymania legendy.W swoim przykładzie powinieneś użyć,
scale_colour_continuous()
ponieważlength
jest zmienną ciągłą (nie dyskretną).Lub za pomocą funkcji
guides()
należy ustawićFALSE
dla tego elementu / estetycznej, które nie chcą się pojawiać jako legendy, na przykładfill
,shape
,colour
.AKTUALIZACJA
Oba dostarczone rozwiązania działają w nowej
ggplot2
wersji 2.0.0, alemovies
zestaw danych nie jest już obecny w tej bibliotece. Zamiast tego musisz użyć nowego pakietu,ggplot2movies
aby sprawdzić te rozwiązania.źródło
guides(alpha=FALSE)
Zrób sztuczkę. Dziękuję Didzis.geom_linerange()
a legenda pokazuje krzyż zamiast linii, wstaw doshow.legend=FALSE
środkageom_linerange()
.Możesz po prostu dodać
show.legend=FALSE
do geom, aby ukryć odpowiednią legendęźródło