Angenommen, ich habe einen ggplot mit mehr als einer Legende.
mov <- subset(movies, length != "")
(p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
geom_point()
)
Ich kann die Anzeige aller Legenden wie folgt ausschalten:
(p1 <- p0 + theme(legend.position = "none"))
Durch Übergeben show_guide = FALSE
an geom_point
(gemäß dieser Frage ) wird die Formlegende deaktiviert.
(p2 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
geom_point(show_guide = FALSE)
)
Aber was ist, wenn ich stattdessen die Farblegende deaktivieren möchte? Es scheint keine Möglichkeit zu geben, zu sagen, auf show_guide
welche Legende ihr Verhalten angewendet werden soll. Und es gibt kein show_guide
Argument für Skalen oder Ästhetik.
(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
Diese Frage legt nahe, dass die moderne (seit ggplot2 v0.9.2) Methode zur Steuerung von Legenden in der guides
Funktion liegt.
Ich möchte in der Lage sein, so etwas zu tun
p0 + guides(
colour = guide_legend(show = FALSE)
)
hat aber guide_legend
kein Show-Argument.
Wie gebe ich an, welche Legenden angezeigt werden?
ggplot2
Updateshow_guide
wurde veraltet und ersetzt durchshow.legend
.Antworten:
Sie können
guide=FALSE
in verwendenscale_..._...()
, um die Legende zu unterdrücken.Für Ihr Beispiel sollten Sie verwenden
scale_colour_continuous()
weillength
es eine kontinuierliche Variable ist (nicht diskret).Oder verwenden
guides()
Sie die Funktion, die SieFALSE
für das Element / die Ästhetik festlegen sollten, das bzw. die nicht als Legende angezeigt werden soll, z.fill
,shape
,colour
.AKTUALISIEREN
Beide bereitgestellten Lösungen funktionieren in der neuen
ggplot2
Version 2.0.0, aber dermovies
Datensatz ist in dieser Bibliothek nicht mehr vorhanden. Stattdessen müssen Sie ein neues Paket verwendenggplot2movies
, um diese Lösungen zu überprüfen.quelle
guides(alpha=FALSE)
Mache den Trick. Danke, Didzis.geom_linerange()
und die Legende ein Kreuz anstelle einer Linie anzeigt, fügen Sie dieseshow.legend=FALSE
in die eingeom_linerange()
.Sie können einfach
show.legend=FALSE
zu geom hinzufügen , um die entsprechende Legende zu unterdrückenquelle