You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用par()无法组合forest.meta()生成的森林图,求原因及解决办法

问题:无法用par()合并forest.meta()生成的森林图

尝试使用par()函数将多张图表合并到一个图像中,直方图等常规图表可以实现该操作,但无法合并forest.meta()生成的森林图。查阅相关资料后未找到解决办法,请问这是否与base R(或graphics包)无法处理forest.meta()导出的图表有关?

测试代码

a <- c("a","b","c", "d", "e", "f")
b <- c(1,2,3,4,5,6)
c <- c(2,2,3,4,5,6)
d <- c(4,5,6,7,8,9)
df <- data.frame(a,b,c,d)

library(meta)
metta <- metaprop(event = df$b, n = df$d, studlab = df$a, data = df)
metta2 <- metaprop(event = df$c, n = df$d, studlab = df$a, data = df)

par(mfrow=c(2,1))
meta::forest.meta(metta)
meta::forest.meta(metta2)

解答

这不是base R或graphics包的问题,而是forest.meta()的默认行为导致的。该函数默认启用newpage = TRUE参数,每次绘图都会创建新的绘图页面,直接覆盖par(mfrow)设置的布局,所以第二个森林图会替换掉第一个,而非按预期排列。

解决方法很简单:调用forest.meta()时设置newpage = FALSE,让函数在当前绘图页面继续绘制,不创建新页面:

par(mfrow=c(2,1))
meta::forest.meta(metta, newpage = FALSE)
meta::forest.meta(metta2)

这样就能在同一个图像中上下排列两个森林图了。如果需要更复杂的布局,也可以配合layout()函数使用,同样要给每个forest.meta()加上newpage = FALSE参数。

内容的提问来源于stack exchange,提问作者Muhammad Aaqib Shamim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 22:05:52