将 ggplot 中的图例大小减小到超出默认大小

标签 r ggplot2 legend

我的目标是用 ggplot 绘制几张图并使用 grid.arrange 将它们组合成一个图在 gridExtra包。

我遇到了一个问题,因为我的 ggplot 中的图例当我尝试将图与 grid.arrange 并排放置时(虽然对于单个图而言尺寸适当)太大。生成的组合图减小了 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 大小。

最佳答案

图例的全部要点是将绘图上的美观(例如颜色、填充、形状或大小)映射到图例中标识的级别。参数 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")   

关于将 ggplot 中的图例大小减小到超出默认大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20589795/

相关文章:

r - `h2o.cbind` 仅接受 H2OFrame 对象 - R

r - R ggplot2如何通过aes获取列名?

r - 根据图中图例向量的长度更改图例中文本的大小

python - 将绘图中的线条与 matplotlib 图例中错误栏中的标记组合起来

java - 更改节点中标签的位置 - Jung2 Java Graph Library

r - 数据框中的条件计数

r - 并行 plyr 中的奇怪环境行为

r - R : How to to get yaxis labels to use ticktext value instead of range value? 中带有 facet_grid 的 Plotly 和 ggplot

r - 使用条件子集 data.table

r - 带 l 的 ggplot map