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

如何在ggplot2分组森林图中添加OR及95% CI文本?

解决方案:用ggplot2添加OR及95%CI文本到分组森林图

不需要更换工具,用ggplot2就能在stupidWolf的分组森林图基础上添加OR和95%CI文本,以下是完整代码和步骤:

1. 准备模拟数据(匹配原回答的分组结构)

先构造包含分组、亚组、OR值及置信区间的数据集:

library(ggplot2)
library(dplyr)

# 模拟数据
set.seed(123)
dat <- data.frame(
  group = rep(c("Group A", "Group B"), each=4),
  subgroup = paste0("Subgroup ", LETTERS[1:8]),
  or = exp(rnorm(8, 0, 0.5)),
  lower = exp(rnorm(8, -0.8, 0.3)),
  upper = exp(rnorm(8, 0.8, 0.3))
)

# 格式化OR和95%CI文本,保留2位小数
dat <- dat %>%
  mutate(or_ci_text = sprintf("%.2f (%.2f, %.2f)", or, lower, upper))

2. 绘制带文本的分组森林图

基于stupidWolf的绘图逻辑,新增文本层:

# 计算分组的分隔位置(用于添加分组线)
group_positions <- dat %>%
  group_by(group) %>%
  summarise(y_pos = mean(row_number())) %>%
  ungroup()

ggplot(dat, aes(x = or, y = reorder(subgroup, desc(row_number())))) +
  # 添加垂直参考线(OR=1)
  geom_vline(xintercept = 1, linetype = "dashed", color = "gray50") +
  # 添加误差线和点估计
  geom_errorbarh(aes(xmin = lower, xmax = upper), height = 0.2, color = "steelblue") +
  geom_point(size = 3, color = "darkred") +
  # 添加OR及95%CI文本,放在误差线右侧
  geom_text(aes(x = upper + 0.2, label = or_ci_text), hjust = 0, color = "black", size = 3.5) +
  # 添加分组分隔线
  geom_segment(data = group_positions, 
               aes(x = -Inf, xend = Inf, y = y_pos + 0.5, yend = y_pos + 0.5),
               color = "black", linetype = "solid") +
  # 添加分组标签
  geom_text(data = group_positions, 
            aes(x = -Inf, y = y_pos, label = group), 
            hjust = 0, vjust = 0.5, size = 4, fontface = "bold") +
  # 调整坐标轴和主题
  scale_x_continuous(limits = c(min(dat$lower)-0.5, max(dat$upper)+1.5)) +
  labs(x = "Odds Ratio (OR)", y = "") +
  theme_minimal() +
  theme(panel.grid.major.y = element_blank(),
        panel.grid.minor = element_blank())

关键说明

  • or_ci_text列:用sprintf将OR值、置信区间上下限格式化为统一的字符串,可根据需求调整小数位数(比如%.3f保留3位)。
  • geom_text的位置:通过x = upper + 0.2将文本放在每个亚组误差线的右侧,可根据实际数据调整偏移量;hjust=0确保文本左对齐。
  • 分组分隔线:保留原回答的分组标记逻辑,让分组结构更清晰。
  • 坐标轴范围:通过scale_x_continuous扩大x轴右侧范围,避免文本被截断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:25:38