2013-12-15 111 views
21

我的目標是使用ggplot製作多個圖並使用gridExtra包中的grid.arrange將它們組合爲一個圖。將ggplot中的圖例大小減小到默認大小

我遇到了一個問題,那就是當我嘗試與grid.arrange並排放置圖時,我的ggplot中的傳說(雖然尺寸適合於單個繪圖)太大。由此產生的組合圖減少了x軸,但保留了圖例的原始大小。所以結果是一個非常瘦的情節,緊挨着一個不必要的大傳說。所以我想在每個情節中減少傳說的大小,這樣我就可以並排放置我的情節。或者可能將它們縮小到足以將它們帶入實際情節之中,而不會過於咄咄逼人。

V1<-rnorm(10) 
V2<-rnorm(10) 
V3<-rnorm(10) 
DF<-data.frame(V1,V2,V3) 


ggplot(DF,aes(x=V1,y=V2,size=V3))+ 
geom_point(fill='red',shape=21)+ 
theme_bw()+ 
scale_size(range=c(5,20)) 

此繪圖命令會在繪圖右側生成標準圖例大小。

enter image description here

我使用不同的主題元素的嘗試:

+theme(legend.key.size = unit(0.5, "cm") 

+theme(legend.key.width=unit(0.3,"cm"),legend.key.height=unit(0.3,"cm"),legend.position = c(0.7, 0.8)) 

雖然我可以通過這些主題命令做出更大的傳說,我不能使圖例小於默認圖例。那麼有什麼辦法可以將圖例縮小到默認大小以外?

我也可以改變我的PDF設備的默認大小,使其更寬和適應大的傳說,但我想現在使用標準的pdf大小。

回答

19

圖例的整個要點是將圖上的美學(例如,顏色,填充,形狀或大小)映射到圖例中標識的級別。參數legend.key.size,.width.height可調整圖例元素周圍框的大小。使用顏色,填充和形狀可以使圖例項目儘可能小,但使用尺寸時,元素的大小會告訴您哪個(多個)泡泡對應於哪個圖例項目,因此圖例項目必須具有對應的尺寸到劇情上。

這裏有三種可能性,可以幫助你:

選項1:把傳說中的情節裏。

ggplot(DF,aes(x=V1,y=V2,size=V3))+ 
    geom_point(fill='red',shape=21)+ 
    theme_bw()+ 
    scale_size(range=c(5,20))+ 
    theme(legend.justification=c(1,0), legend.position=c(1,0)) 

選項2:使用facet_wrap(...)如果你能。這樣你只能得到一組圖的一個圖例。

選項3:使用顏色和大小,然後完全隱藏大小圖例。

ggplot(DF,aes(x=V1,y=V2,size=V3, color=V3))+ 
    geom_point(shape=19)+ 
    theme_bw()+ 
    scale_size(range=c(5,20), guide="none")+ 
    scale_color_gradient(high="#ff0000", low="#ffffcc")