Einige Legenden in einem ggplot ausschalten

221

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 = FALSEan 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_guidewelche Legende ihr Verhalten angewendet werden soll. Und es gibt kein show_guideArgument 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 guidesFunktion liegt.

Ich möchte in der Lage sein, so etwas zu tun

p0 + guides(
  colour = guide_legend(show = FALSE) 
)

hat aber guide_legendkein Show-Argument.

Wie gebe ich an, welche Legenden angezeigt werden?

Richie Cotton
quelle
6
Nach einem kürzlichen ggplot2Update show_guidewurde veraltet und ersetzt durch show.legend.
PatrickT

Antworten:

294

Sie können guide=FALSEin verwenden scale_..._...(), um die Legende zu unterdrücken.

Für Ihr Beispiel sollten Sie verwenden scale_colour_continuous() weil lengthes eine kontinuierliche Variable ist (nicht diskret).

(p3 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
   scale_colour_continuous(guide = FALSE) +
   geom_point()
)

Oder verwenden guides()Sie die Funktion, die Sie FALSEfür das Element / die Ästhetik festlegen sollten, das bzw. die nicht als Legende angezeigt werden soll, z.fill , shape, colour.

p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point()    
p0+guides(colour=FALSE)

AKTUALISIEREN

Beide bereitgestellten Lösungen funktionieren in der neuen ggplot2Version 2.0.0, aber der moviesDatensatz ist in dieser Bibliothek nicht mehr vorhanden. Stattdessen müssen Sie ein neues Paket verwenden ggplot2movies, um diese Lösungen zu überprüfen.

library(ggplot2movies)
data(movies)
mov <- subset(movies, length != "")
Didzis Elferts
quelle
6
Die scale_colour_continuous (guide = FALSE) funktioniert in ggplot2 0.9.3 nicht, aber die Guides (color = FALSE) lösen das Problem. Vielen Dank Didzis!
Nikolay Nenov
1
@ NikolayNenov Seltsam, weil beide Lösungen für mich mit ggplot2 0.9.3.1 funktionieren
Didzis Elferts
9
Ich möchte die Legende von Alpha entfernen . guides(alpha=FALSE)Mache den Trick. Danke, Didzis.
10o0
3
Hinweis für sich selbst: Wenn Sie eine haben geom_linerange()und die Legende ein Kreuz anstelle einer Linie anzeigt, fügen Sie diese show.legend=FALSEin die ein geom_linerange().
PatrickT
25

Sie können einfach show.legend=FALSEzu geom hinzufügen , um die entsprechende Legende zu unterdrücken

fc9.30
quelle