2013-12-15 112 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")