使用`grid.arrange`保持文本大小一致

3

问题

我有4个图表,想使用grid.arrange()显示。当我单独显示它们时,它们看起来像这样:

enter image description here

但是当我使用grid.arrange()时,它们变得扭曲了

enter image description here

每个图表单独的样子如下:

enter image description here

具体问题:

  1. x轴标签不会自适应缩放并重叠在一起,导致无法阅读。
  2. 副标题被截断。

目标

我想用grid.arrange()在一个网格中完全复制每个图表的第一个理想情况。一种可能的方法是将每个图表转换为图像,然后使用grid.arrange(),但我不知道如何做到这一点。

可重现的示例

以下是一个可重现的示例代码,演示了我遇到的问题。

p1 <- ggplot(subset(mtcars, cyl = 4), aes(wt, mpg, colour = cyl)) + geom_point() + labs(title = "TITLE-TITLE-TITLE-TITLE-TITLE-TITLE", subtitle = "-subtitle-subtitle-subtitle-subtitle-subtitle-subtitle-subtitle-") +theme(plot.title = element_text(hjust = 0.5),plot.subtitle = element_text(hjust = 0.5)) 
p2 <- ggplot(subset(mtcars, cyl = 4), aes(wt, mpg, colour = cyl)) + geom_point() + labs(title = "TITLE-TITLE-TITLE-TITLE-TITLE-TITLE", subtitle = "-subtitle-subtitle-subtitle-subtitle-subtitle-subtitle-subtitle-") +theme(plot.title = element_text(hjust = 0.5),plot.subtitle = element_text(hjust = 0.5)) 

grid.arrange(p1, p2, ncol = 2)

你是在RStudio的小面板中查看图形吗?当你导出或缩小图形时,扭曲是否会改变?我使用可重现的示例没有看到这样的扭曲。此外,在标题中添加'\n'以换行。 - Parfait
我正在使用R Markdown将它们导出为PDF,因为这是一份报告所需的。\n建议对于副标题是个好主意。但是x轴部分仍然存在问题。此外,以这种方式修改图表似乎效率低下。为什么不能像图片一样缩放它们呢? - Stan Shunpike
请确保你需要使用grid.arrange。 我经常看到人们在facet_wrap更合适的情况下使用它。 - Richard Telford
1个回答

2
当你单独显示这些图形时,它们只是有更多的空间。因此,这些是自然的扭曲,可能只有三种方法可以解决。
1. 在导出组合图时,将其放大。如果单独的图像在6x5英寸大小下看起来不错,那么组合后的图像在12x10英寸大小下肯定也会很好看。 2. 对于有问题的部分(如x轴标签和副标题),给予相应的较少空间。例如,对于plot.subtitle和axis.title.x,使用类似于element_text(size = 6)的内容,对于副标题和甚至x轴标签添加\n,还可以尝试使用类似于element_text(angle = 30)的内容。 3. 摆脱一些不必要的东西。正如@Richard Telford在评论中提到的那样,使用facet_wrap应该会更好。这是由于不重复y轴标签,从而给予更多的水平空间。

@Stan Shunpike,我怀疑你可能不喜欢这个解决方案,但问题是当你在R中以某种方式重新调整绘图时,文本大小保持不变。你的第一个图是长方形的,而在第二个图中,每个单独的图都是正方形的,宽度显然较小,因此文本不再适合。 - Julius Vainora
这是一个非常出色的解决方案。它比我提出的更好,结果也比我想象的要好。谢谢! - Stan Shunpike

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