BioF3 FigCode · SCI 绘图代码集
Meta 森林图(Meta Forest Plot)
分类:生存分析 | 依赖包:metafor、ggplot2
解决的生物学问题
同一个生物标志在多个独立 cohort 中的效应是否一致?合并后的总效应有多大?
应用场景
- 多 cohort signature 验证(TCGA + ICGC + GEO)
- Meta 分析合并 OR/HR
- Subgroup 异质性检验
- 系统综述效应量汇总
输入数据格式
数据框:study, n, effect (HR/OR/log2FC), lower_CI, upper_CI
关键参数
- method = "REML"(random effects) / "FE"(fixed)
- measure = "HR" / "OR" / "MD"
- showweights = TRUE 显示权重
快速开始
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 --- 标注的段落是示例数据生成代码。替换为自己的数据时,保持列名一致即可:
- 输入格式:数据框:study, n, effect (HR/OR/log2FC), lower_CI, upper_CI
- 使用
read.csv()/readRDS()读取本地文件
延伸阅读
- 相关教程:Meta 森林图 完整流程
- 出现 bug?欢迎在 FigCode 页面 点击对应卡片,在评论区留言。