it-swarm.com.de

Deaktivieren Sie einige Legenden in einem GGPlot

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"))

Vorbeigehen show_guide = FALSE bis geom_point (gemäß diese Frage ) schaltet die Formlegende aus.

(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, show_guide Auf welche Legende soll das Verhalten angewendet werden? 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 Art der Steuerung von Legenden (seit ggplot2 v0.9.2) die Funktion guides ist.

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

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

aber guide_legend hat kein Show-Argument.

Wie lege ich fest, welche Legenden angezeigt werden?

193
Richie Cotton

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

Für Ihr Beispiel sollten Sie scale_colour_continuous() verwenden, da length 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 Sie die Funktion guides(), um FALSE für das Element/die Ästhetik festzulegen, das/die nicht als Legende angezeigt werden soll, z. B. 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 ggplot2 - Version 2.0.0, aber der Datensatz movies ist in dieser Bibliothek nicht mehr vorhanden. Stattdessen müssen Sie ein neues Paket ggplot2movies Verwenden, um diese Lösungen zu überprüfen.

library(ggplot2movies)
data(movies)
mov <- subset(movies, length != "")
261
Didzis Elferts

Sie können einfach show.legend=FALSE um die entsprechende Legende zu unterdrücken

14
fc9.30