在 ggplot 中减小图例大小超出默认大小

27
我的目标是使用ggplot创建多个图并使用gridExtra包中的grid.arrange将它们组合成单个图。
问题在于,当我尝试将这些图放置在一起时,我的ggplot中的图例(虽然对于单个图而言大小适当)在实现了grid.arrange之后太大了。因此,结果是一个非常瘦长的图,旁边有一个过度庞大的图例。因此,我想要缩小每个图中的图例大小,以便能够将它们并排放置。或者缩小它们的大小,使其可以放入实际图形中而不会过于突兀。
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大小。

1个回答

21
传说的整个意义在于将美学元素(例如颜色、填充、形状或大小)映射到图例中所识别的级别上。参数 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")   


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接