2013-12-09 7 views
6

Quando si crea un grafico a bolle in ggplot, sto riscontrando un problema che regola due scelte estetiche separate e sono sicuro che abbia qualcosa a che fare con il modo in cui sto codificando la mia trama Nella trama qui sotto, se assegno il colore delle bolle sulla base di una variabile in questo modo:La designazione del colore della bolla come variabile è una scelta limitante 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

Le due questioni che ho con questa trama sono

1- volevo cambia il pallet di colori predefinito in qualcosa di meno pastello. Pensavo che usare l'argomento scale_color_brewer avrebbe cambiato i colori in "Blues", ma ovviamente non è così.

2- In secondo luogo, la legenda per V4 ora ha cerchi vuoti, mentre senza l'argomento aes (fill =) i cerchi sono stati riempiti. Lo so perché ho molti colori per le mie cerchie ora, ma preferirei avere un cerchio solido (nero) come la mia leggenda rispetto ai cerchi aperti. C'è un modo per ignorare la legenda e riempire i cerchi?

+2

Riempimento e colore sono un'estetica diversa. – joran

+1

sarà un po 'difficile avere meno colori "pastel-y" perché l'impostazione di 'alpha = 0.5' diluirà ogni colore di riempimento che usi a metà ... anche se @joran indica usando' scale_fill_brewer' invece di 'scale_colour_brewer 'aiuterà. –

risposta

4

per (1) utilizzare scale_fill_brewer(palette="Blues")

Per (2) utilizzare guides(size=guide_legend(override.aes = list(fill="black", alpha=1)))


aggiornamento: @BenBoker fa un grande punto nel suo commento sopra. Suggerirei almeno di inserire l'alfa nella legenda: aggiungi a (2) sopra: , color=guide_legend(override.aes = list(alpha=0.9)) o qualcosa del genere

Problemi correlati