2013-11-04 13 views
8

In ggplot2 wird Transparenz, die in geom_XXX definiert ist, in der Legende wiedergegeben. Zum Beispiel:Punkttransparenz in ggplot2-Legende entfernen

df <- data.frame(x=runif(10000), z=ifelse(runif(10000) > 0.5, 'a', 'b')); df$y <- runif(10000); df$y[df$z == 'b'] <- cos(df$x[df$z == 'b']*10) 
ggplot(df) + geom_point(aes(x, y, color=z), alpha=0.1) 

ergibt folgendes Ergebnis:

what we have

Da die Punkte sehr transparent sind, sind sie kaum auf der Legende gesehen. Ich mag Punkt Transparenz aus der Legende entfernen, so dass der Graph wie folgt aussieht:

what I want

Wie ist das möglich?

Antwort

21

Sie können die Funktion guides() und override.aes= verwenden, um den Alpha-Wert nur für Legendeneinträge festzulegen.

ggplot(df) + geom_point(aes(x, y, color=z), alpha=0.1)+ 
    guides(colour = guide_legend(override.aes = list(alpha=1))) 
+0

war dieser Mechanismus nicht bekannt. Die Schnellsuche nach override.aes ​​ergab mehrere weitere Beispiele: http://StackOverflow.com/Q/16356052/17523 und http://StackOverflow.com/Q/5290003/17523, was ein Duplikat dieser Frage ist. –