1

Rパッケージを使用して作成されたフォレストプロットがいくつかありますforestplot。そうしたいのですgrid.arrangeが、これは簡単には機能しないようです。

例:

library(forestplot)
# A basic example, create some fake data
row_names <- list(list("test = 1", expression(test >= 2)))
test_data <- data.frame(coef=c(1.59, 1.24),
                    low=c(1.4, 0.78),
                    high=c(1.8, 1.55))

forestplot(row_names,
       test_data$coef,
       test_data$low,
       test_data$high,
       zero = 1,
       cex  = 2,
       lineheight = "auto",
       xlab = "Lab axis txt")

これでプロットが描画されます。ここで、それを別のプロットと並べてオブジェクト プロットに取り込みたいとします。

fp1 <- forestplot(row_names,
       test_data$coef,
       test_data$low,
       test_data$high,
       zero = 1,
       cex  = 2,
       lineheight = "auto",
       xlab = "Lab axis txt")

以下はエラーをスローします。

> grid.arrange(fp1, fp1)
Hit <Return> to see next plot: 
Error in gList(list(path = "GRID.VP.7537", name = "arrange.1-1-1-1", n = 2L,  : 
only 'grobs' allowed in "gList"

明らかに fp1 はグロブではありませんが、他の手段でこれを達成するにはどうすればよいですか?

4

1 に答える 1

2

ヘルプ ページの 2 番目の例を参照してください?forestplot。これは、これを行う方法を示しています。


forestplotはプロットを返していないようです: を見てくださいstr(fp1)

いくつかのオプションを使用gridしてプロット スペースを作成する (v1)、またはプロットをキャプチャしてから結合する (v2)。


グリッドを使用した v1

library(grid)
library(forestplot)

# Create 2 rows by one columns viewport
grid.newpage()
pushViewport(viewport(layout=grid.layout(2, 1)))

# Plot in viewport position 1x1
pushViewport(viewport(layout.pos.row=1, layout.pos.col=1))
forestplot(row_names,
       test_data$coef,
       test_data$low,
       test_data$high,
       zero = 1,
       cex  = 2,
       lineheight = "auto",
       xlab = "Lab axis txt")
upViewport(1)

# Plot in viewport position 2x1
pushViewport(viewport(layout.pos.row=2, layout.pos.col=1))
forestplot(row_names,
       test_data$coef,
       test_data$low,
       test_data$high,
       zero = 1,
       cex  = 2,
       lineheight = "auto",
       xlab = "Lab axis txt", 
       new_page = FALSE)
upViewport(1)

v2、プロットをキャプチャ

fp1 <- grid.grabExpr(print(forestplot(row_names,
       test_data$coef,
       test_data$low,
       test_data$high,
       zero = 1,
       cex  = 2,
       lineheight = "auto",
       xlab = "Lab axis txt")))

gridExtra::grid.arrange(fp1, fp1)
于 2016-12-16T18:56:45.030 に答える