BioF3 FigCode · SCI 绘图代码集

Meta 森林图(Meta Forest Plot)

导出日期:2026年6月27日

分类:生存分析 | 依赖包:metafor、ggplot2

解决的生物学问题

同一个生物标志在多个独立 cohort 中的效应是否一致?合并后的总效应有多大?

应用场景

输入数据格式

数据框:study, n, effect (HR/OR/log2FC), lower_CI, upper_CI

关键参数

快速开始

1. 直接在线运行

打开 FigCode 在线绘图,点击本工具卡片的"在线绘图"按钮即可用内置示例数据出图,零环境配置。

2. 本地复现

下载脚本和示例数据,本地 RStudio 运行:

# 下载
curl -O https://<your-site>/figcode/scripts/meta-forest.R
curl -O https://<your-site>/figcode/data/meta-forest.csv

3. 安装依赖

# CRAN 包
install.packages(c("metafor", "ggplot2"))

# Bioconductor 包(如需)
# BiocManager::install(c())

完整代码

library(metafor)
library(ggplot2)

# --- Demo: 6 cohorts, log HR with SE ---
df <- data.frame(
  study = c("TCGA-LIHC","ICGC-LIRI","GSE14520","GSE76427",
            "CHCC-HBV","Korean cohort"),
  yi    = c(log(1.85), log(1.62), log(2.10), log(1.45),
            log(1.78), log(1.95)),       # log HR
  sei   = c(0.18, 0.22, 0.30, 0.28, 0.20, 0.25),
  n     = c(371, 232, 220, 167, 159, 186)
)

# --- Random-effects meta-analysis ---
res <- rma(yi = yi, sei = sei, data = df, method = "REML",
           slab = study, measure = "GEN")

# --- Forest plot ---
forest(
  res,
  atransf  = exp,            # show on HR scale
  refline  = 1,
  xlab     = "Hazard Ratio",
  cex      = 0.9,
  header   = "Cohort",
  mlab     = sprintf("RE Model (I² = %.1f%%, p = %.3f)",
                     res$I2, res$pval),
  col      = "#dc2626"
)

替换为自己的数据

脚本中以 # --- Demo data --- 标注的段落是示例数据生成代码。替换为自己的数据时,保持列名一致即可:

延伸阅读