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

如何避免R Markdown编织时森林图(Forest Plot)被截断?

R Markdown编织HTML时森林图截断的解决方案

方法1:调整代码块图形尺寸参数

这是最常用的解决方案,通过修改R代码块的输出图形宽高,适配森林图的内容量:

  • 单个代码块调整:在代码块头部添加fig.height和fig.width参数,你的示例包含23项研究,推荐高度设为10-14,宽度设为9-12,示例代码块声明如下:
    {r, fig.height=12, fig.width=10, echo=FALSE}
    # 森林图生成代码放在此处
    
  • 全局统一调整:如果多个代码块都生成森林图,可在文档最开头的setup配置块中设置全局参数,避免每个块重复修改:
    knitr::opts_chunk$set(
      fig.height = 12,
      fig.width = 10,
      out.width = "100%" # 可选配置,让图形自动适配HTML页面宽度
    )
    

方法2:调整森林图本身的渲染参数

如果调整块参数后还有局部内容截断,可以修改forest.meta的绘图参数缩小内容占比:

  • 调整全局字体缩放系数cex,降低字体大小腾出空间,比如设置cex=0.8
  • 自定义x轴范围,替换默认的xlim="symmetric",根据你的效应量范围设置合适的区间,比如xlim=c(-15,15)
  • 调整左侧标签列宽度,用leftcols.width参数适配长作者名,比如leftcols.width=c(4,2,2)

调整后的完整可运行示例

author = c("aaaaaaaaaa", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "t", "u", "v", "w", "x")
Ne = c(1, 2, 3, 4, 5, 6, 7, 8, 8, 34, 5, 6, 7, 8, 4, 3, 2, 7, 3, 6, 7, 8, 5)
Me = c(1, 2, 3, 4, 5, 6, 7, 8, 8, 34, 5, 6, 7, 8, 4, 3, 2, 7, 3, 6, 7, 8, 5)
SDe = c(1, 2, 3, 4, 5, 6, 7, 8, 8, 34, 5, 6, 7, 8, 4, 3, 2, 7, 3, 6, 7, 8, 5)
Nc = c(1, 2, 3, 4, 5, 6, 7, 8, 8, 34, 5, 6, 7, 8, 4, 3, 2, 7, 3, 6, 7, 8, 5)
Mc = c(1, 2, 3, 4, 5, 6, 7, 8, 8, 34, 5, 6, 7, 8, 4, 3, 2, 7, 3, 6, 7, 8, 5)
SDc = c(1, 2, 3, 4, 5, 6, 7, 8, 8, 34, 5, 6, 7, 8, 4, 3, 2, 7, 3, 6, 7, 8, 5)

df = data.frame(author, Ne, Me, SDe, Nc, Mc, SDc)

m.cont <- meta::metacont(n.e = Ne,
                   mean.e = Me,
                   sd.e = SDe,
                   n.c = Nc,
                   mean.c = Mc,
                   sd.c = SDc,
                   studlab = author,
                   data = df,
                   sm = "SMD",
                   method.smd = "Hedges",
                   fixed = FALSE,
                   random = TRUE,
                   method.tau = "REML",
                   hakn = TRUE,
                   title = "Example")

meta::forest.meta(m.cont, 
            sortvar = TE,
            predict = TRUE, 
            print.tau2 = FALSE,
            leftlabs = c("Author", "g", "SE"),
            xlim = c(-15,15), # 自定义x轴范围
            cex = 0.8, # 缩小字体
            leftcols.width = c(4,2,2)) # 调整左侧列宽度

将上述代码放在设置了fig.height=12, fig.width=10的代码块中,编织HTML即可输出完整的森林图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:36:08