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

如何为Meta分析森林图添加亚组标题(基于R语言meta包)

解决meta包森林图亚组标题不显示的问题

你的核心问题是当前的mettot是单个整体的Meta分析对象,没有划分亚组结构,所以forest()里的subgroup.name参数不会生效——这个参数仅在Meta对象包含亚组信息时才会触发显示。下面给你两种可行的解决办法:

方法一:手动添加标题行(适合单亚组场景)

直接在绘制完森林图后,用text()函数在指定位置插入亚组标题,不用依赖亚组功能:

# 先绘制森林图,关闭默认的亚组名称打印
forest(mettot, layout = "RevMan5", label.e = "Post-treatment", label.c = "Pre-treatment", 
       label.left = "Favors Post-Treatment", label.right = "Favors Pre-Treatment",
       rows.gr = 2, digits.mean = 1,digits.sd = 1, colgap = "0.25inch", print.subgroup.name = FALSE)
# 手动添加亚组标题,调整x、y坐标适配你的图
text(x = -2, y = nrow(df) + 3, labels = "1.1.1 TNSS Total", font = 2, adj = 0)
  • y坐标:nrow(df)是你纳入的研究数量,+3是预留标题的位置,可根据实际图的布局微调;
  • font=2设置标题加粗,和RevMan的亚组标题样式一致;
  • adj=0实现左对齐,x坐标根据你的森林图刻度调整。

方法二:构建带亚组的Meta对象(更贴合RevMan样式)

给数据框添加亚组列,让Meta对象自带亚组信息,这样forest()会自动生成符合要求的亚组标题:

# 在数据框中新增亚组列,值设为你需要的标题
df$subgroup = "1.1.1 TNSS Total"
# 重新构建带亚组的Meta分析对象
mettot_sub = metacont(n.e = tot_n.e, mean.e = tot_m.e, sd.e = tot_sd.e,
                     n.c = tot_n.c, mean.c = tot_m.c, sd.c = tot_sd.c,
                     data = df,
                     studlab = Author,
                     sm = "SMD",
                     random = TRUE,
                     common = FALSE,
                     method.smd = "hedges",
                     subgroup = subgroup)  # 指定亚组变量
# 绘制森林图,此时会自动显示亚组标题
forest(mettot_sub, layout = "RevMan5", label.e = "Post-treatment", label.c = "Pre-treatment", 
       label.left = "Favors Post-Treatment", label.right = "Favors Pre-Treatment",
       rows.gr = 2, digits.mean = 1,digits.sd = 1, colgap = "0.25inch", 
       print.subgroup.name = TRUE)

这种方法生成的亚组标题样式和RevMan5完全一致,不需要手动调整坐标,更规范。

内容的提问来源于stack exchange,提问作者pranav patel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:55:04