使用`grid.arrange`

时间:2018-03-11 20:43:04

标签: r ggplot2

问题

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

enter image description here

但是当我使用grid.arrange()时,它们会变形

enter image description here

与他们分别看起来像

enter image description here

具体问题:

  1. x轴标签不会缩放和重叠,使其无法读取。
  2. 字幕被截止。
  3. 目标

    我希望在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)
    

1 个答案:

答案 0 :(得分:1)

当您单独显示这些图形时,它们只会有更多空间。所以,那些是自然扭曲,也许只有三种方法可以解决这个问题。

  1. 导出组合图时,请将其设置得足够大。如果个人在6x5英寸中看起来很好,那么合并后的那个在12x10英寸中看起来会很好。

  2. 为有问题的部分提供相应的空间:x轴标签和副标题。例如,对element_text(size = 6)plot.subtitle使用axis.title.x之类的内容,在字幕甚至x轴标签上添加\n,尝试类似element_text(angle = 30)的内容后者也是如此。

  3. 摆脱不必要的东西。正如@Richard Telford在评论中所建议的,使用facet_wrap应该会更好。这可能是由于,例如,不重复y轴标签,因此,提供更多的水平空间。