如何使用R语言复现效应估计的分面分组森林图?
复现分面效应估计森林图
1. 准备工作:加载依赖包
首先安装并加载ggplot2,这是绘制该图的核心工具:
install.packages("ggplot2") library(ggplot2)
2. 数据标签替换
根据你给出的对应关系,把数据中的编码标签替换为实际名称:
# 替换Level的数字编码为对应名称 effect_data$Level <- factor( effect_data$Level, levels = 1:4, labels = c("TM", "RC", "S2", "S1") ) # 替换M1的字母编码为对应分组名(示例补充了你提到的3个,剩余9个可自行修改) effect_data$M1 <- factor( effect_data$M1, levels = letters[1:12], labels = c("Fladen", "Landsort", "Utlagan", "Group4", "Group5", "Group6", "Group7", "Group8", "Group9", "Group10", "Group11", "Group12") )
3. 绘制分面森林图
这个图的正式名称是分面森林图(Faceted Forest Plot),代码如下:
ggplot(effect_data, aes(x = EffectEstimate, y = M1)) + # 添加效应为0的参考虚线 geom_vline(xintercept = 0, linetype = "dashed", color = "gray50") + # 绘制置信区间 geom_errorbarh(aes(xmin = LowerCI, xmax = UpperCI), height = 0.2, color = "black") + # 绘制效应估计点 geom_point(size = 2, color = "#1f77b4") + # 按Level变量分面,可通过ncol调整列数 facet_wrap(~ Level, ncol = 1) + # 设置坐标轴标签 labs(x = "效应估计值(95%置信区间)", y = "分组") + # 使用简洁主题并调整样式 theme_bw() + theme( strip.background = element_rect(fill = "#f0f0f0"), strip.text = element_text(face = "bold"), axis.text.y = element_text(size = 10), axis.title = element_text(size = 12, face = "bold") )
自定义调整提示
- 若想改变分面布局,修改
facet_wrap中的ncol参数(比如ncol=2会变成2列布局)。 - 可以调整
geom_point的color/size、geom_errorbarh的color来匹配目标图的样式。 - 如果需要更紧凑的布局,可添加
theme(panel.spacing = unit(0.5, "lines"))调整分面间距。
内容的提问来源于stack exchange,提问作者Science11
相关产品推荐
相关产品推荐

