删除R中grid.arrange函数产生的两个图之间的空白

时间:2018-10-09 23:35:54

标签: r ggplot2 graphics

我想消除两个我使用grid.arrange()并排绘制的森林图之间的空白。

在您投反对票或重新定向之前-在问这个问题之前,我花了数小时试图尝试解决我在此处针对类似问题遇到的每个答复中提出的每种解决方案,而没有达到我想要的结果。 < / p>

首先,这是我的数据集和代码:

library(meta)
library(grid)
library(gridExtra)

df <- structure(list(study    = 1:7,
                     sens     = c(0.88, 0.86, 0.75, 0.9, 0.91, 0.93, 0.98),
                     sens.se  = c(0.13, 0.08, 0.2, 0.06, 0.13, 0.15, 0.66),
                     sens2    = c(0.76, 0.68, 0.9, 0.82, 0.76, 0.85, 0.76),
                     sens.se2 = c(0.14, 0.08, 0.2, 0.06, 0.14, 0.15, 0.66)),
                class = "data.frame",
                row.names = c(NA, -7L))

## setting up meta-analysis model using library(meta)
res1 <- metagen(TE=sens, seTE=sens.se, data=df, studlab=study)
res2 <- metagen(TE=sens2, seTE=sens.se2, data=df, studlab=study)

## changing plots to grid graphical objects to use grid.arrange
fp1 <- grid.grabExpr(forest(res1, data=df, method.tau="REML", 
                            comb.random=TRUE, leftcols="studlab",
                            rightcols=c("effect", "ci")))
fp2 <- grid.grabExpr(forest(res2, data=df, method.tau="REML", 
                            comb.random=TRUE, leftcols="studlab",
                            rightcols=c("effect", "ci")))

## arranging plots side by side:
grid.arrange(fp1, fp2, ncol = 2)

当我尝试使用在回答类似问题时建议使用的代码时,即使R将图识别为“ gTrees”,因为我使用了grid.grabExpr函数,我也会收到“ gList仅允许gLists”错误代码。我尝试通过以下方式将gTree强制转换为grobs:

p1 <- as.grob(fp1)
p2 <- as.grob(fp2)

,仅在全局环境中创建空值。

对此我将不胜感激!

1 个答案:

答案 0 :(得分:4)

也许这正是您想要的:

grid.grabExpr(
  forest(
    res1, data=df, method.tau="REML", 
    comb.random=TRUE, leftcols="studlab",
    rightcols=c("effect", "ci")
  ),
  height = 1, width = 2
) -> fp1

grid.grabExpr(
  forest(
    res2, data=df, method.tau="REML", 
    comb.random=TRUE, leftcols="studlab",
    rightcols=c("effect", "ci")
  ),
  height = 1, width = 2
) -> fp2

grid.arrange(fp1, fp2, ncol = 2, vp=viewport(width=1, height=1, clip = TRUE))

enter image description here