2013-12-09 2 views
6

Beim Erstellen eines Blasendiagramms in ggplot habe ich ein Problem bei der Anpassung von zwei verschiedenen ästhetischen Optionen und ich bin mir sicher, dass es etwas mit der Art zu tun hat, wie ich codiere meine Handlung. In der folgenden Handlung, wenn ich die Farbe der Blasen auf der Grundlage einer Variablen zuweisen wie folgt:Die Kennzeichnung der Blasenfarbe als Variable beschränkt die Auswahl in ggplot

V1<-rnorm(50) 
V2<-rnorm(50) 
V3<-c(rep("A",10),rep("B",10),rep("C",10),rep("D",10),rep("E",10)) 
V4<-V2+.1 
V5<-c(rep("BF1",9),rep("BF2",11),rep("BF3",8),rep("BF4",12),rep("BF5",10)) 
DF<-data.frame(V1,V2,V3,V4,V5) 

ggplot(DF,aes(x=V1,y=V2,size=V4,label=DF$V3,fill=V5),legend=FALSE)+ 
scale_y_continuous(limits = c(-3, 3))+ 
scale_x_continuous(limits = c(-3, 3))+ 
geom_point(color="black",shape=21,alpha=0.5)+ 
geom_text(size=2)+ 
theme_bw()+ 
scale_size(range = c(5, 20))+ 
scale_colour_brewer(palette="Blues") 

enter image description here

Die beiden Fragen, die ich mit diesem Grundstück haben, sind

1- Ich wollte Ändern Sie die Standardpalette von Farben zu etwas weniger Pastell. Ich dachte, mit dem scale_color_brewer-Argument würden die Farben zu "Blues" geändert, aber das ist offensichtlich nicht der Fall.

2- Zweitens hat die Legende für V4 nun leere Kreise, während ohne das Argument aes (fill =) die Kreise gefüllt wurden. Ich weiß, das liegt daran, dass ich jetzt viele Farben für meine Kreise habe, aber ich würde es bevorzugen, wenn ein fester (schwarzer) Kreis meine Legende wäre, im Gegensatz zu den offenen Kreisen. Gibt es eine Möglichkeit, die Legende zu überschreiben und die Kreise zu füllen?

+2

Füllen Sie und färben Sie sind unterschiedliche Ästhetik. – joran

+1

wird es ein bisschen schwierig, weniger "Pastell-y" Farben zu haben, weil die Einstellung 'alpha = 0.5' jede Füllfarbe halbiert ... obwohl @joran mit' scale_fill_brewer' anstatt mit 'scale_colour_brewer' aufzeigt 'wird helfen. –

Antwort

4

Für (1) verwenden scale_fill_brewer(palette="Blues")

Für (2) verwenden guides(size=guide_legend(override.aes = list(fill="black", alpha=1)))


Update: @BenBoker macht einen großen Punkt in seinem Kommentar über. Ich würde mindestens vorschlagen, das Alpha in der Legende anzukurbeln: fügen Sie (2) oben hinzu: , color=guide_legend(override.aes = list(alpha=0.9)) oder etwas dieser Natur