为什么我的 ggplot2 图例在使用 gridExtra 时大小不正确? [r]

Why is my ggplot2 legend improperly sized when using gridExtra? [r]

我正在用 gridExtra 安排几个点图。当我绘制单个图时,图例的大小和位置都正确。它看起来像这样:

当我使用 gridExtra 的 grid.arrange() 在网格中绘制多个时,我的问题就出现了。图例未随其他图调整大小,最终看起来像这样:

这是用于创建网格的绘图和线条的代码:

b2 <- ggplot(y2, aes(Rain_discrete, Cum_stress))+
  geom_point(aes(color = Planting), size = 2.25)+ 
  guides(colour = guide_legend(direction = "vertical", 
                               title.position = "top", title = NULL,
                               label.theme = element_text(size = 8, angle = 0)))+
  theme(legend.justification=c(1,1), 
        legend.position=c(1,1),
        legend.margin = margin(1,1,1,1),
        plot.title = element_text(size = 9, angle = 0),
        plot.margin = margin(2,1,4,1),
        axis.title.x = element_text(size = 8, angle = 0),
        axis.title.y = element_text(size = 8, angle = 90),
        axis.text.x = element_text(size = 8, angle = 0),
        axis.text.y = element_text(size = 8, angle = 0))+
  coord_cartesian(xlim = c(0, 85), ylim = c(-30,420))+
  xlab("Discrete Rain")+
  ylab("Cumulative Stress")+
  ggtitle("2002")

grid.arrange(b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13)

我通过从情节的引导部分删除 label.theme = element_text(size = 8, angle = 0) 来操纵图例特征。我的逻辑是,直接指定文本大小会阻止绘图被适当调整大小。这没有用。我无法确定问题所在。

为什么使用 gridExtra() 没有适当地调整图例的大小?我正在尝试以一种强制图例保留在原位并在使用 gridExtra().

时按比例缩放的方式构建 ggplot2 代码

谢谢你的建议。

不知道为什么会这样,但您可以尝试 cowplot 包来绘制与替代方案相同的内容。 https://cran.r-project.org/web/packages/cowplot/vignettes/introduction.html

我认为是字体大小的问题。您是否尝试减小图像的尺寸 "globally"?喜欢

ggplot(y2, aes(Rain_discrete, Cum_stress))+
  geom_point(aes(color = Planting), size = 2.25)+ 
  guides(colour = guide_legend(direction = "vertical", 
                               title.position = "top", title = NULL,
                               label.theme = element_text(size = 8, angle = 0))) +
  theme_grey(6) +
  theme(legend.justification=c(1,1), 
        legend.position=c(1,1),
        legend.margin = margin(1,1,1,1),
        plot.margin = margin(2,1,4,1))+
  coord_cartesian(xlim = c(0, 85), ylim = c(-30,420))+
  xlab("Discrete Rain")+
  ylab("Cumulative Stress")+
  ggtitle("2002")

或者通过额外调整图例元素的大小?

  theme(legend.key.size=unit(1,'mm'),
        legend.text=element_text(size=6),
        legend.title=element_text(size=7))