如何用ggplot绘制多分组/多亚组森林图(R语言)
R多亚组森林图绘制求助
我是R与RStudio新手,正在做咖啡摄入量与认知表现(MoCA评分)的亚组分析:咖啡摄入量分为<1杯/天、1杯/天、2-3杯/天、4-5杯/天、>5杯/天,计划按性别(女性vs男性)和年龄(<80岁vs>80岁)拆分亚组。目前只能单独绘制单个亚组的森林图,无法将多个亚组结果整合到同一图中,细节如下:
1. 亚组数据拆分代码
dt_bsl_women <- dt_bsl[dt_bsl$pat.sex=="Female",] dt_bsl_men <- dt_bsl[dt_bsl$pat.sex=="Male",] dt_bsl_old <- dt_bsl[dt_bsl$age.bl>80,] dt_bsl_young <- dt_bsl[dt_bsl$age.bl<=80,] dt_bsl_men_old <- dt_bsl[dt_bsl$pat.sex=="Male"&dt_bsl$age.bl>80,] dt_bsl_men_young <- dt_bsl[dt_bsl$pat.sex=="Male"&dt_bsl$age.bl<=80,] dt_bsl_women_old <- dt_bsl[dt_bsl$pat.sex=="Female"&dt_bsl$age.bl>80,] dt_bsl_women_young <- dt_bsl[dt_bsl$pat.sex=="Female"&dt_bsl$age.bl<=80,]
2. 单个亚组(仅男性)的模型与绘图代码
# 构建混合效应模型 mod_bsl <- lmer (moca.merged ~ exposure + age.bsl.centered + education + bmi.centered + sport + active_smoker + prev.stroke + prev.diabetes + prev.hypertonie + gds.cat + (1|center) + crphs + il6, data= subset(dt_bsl_men , dt_bsl_women)) # 计算置信区间 ci <- confint(mod_bsl, oldNames=FALSE) output <- tidy(mod_bsl, conf.int=TRUE, exponentiate=FALSE, effects="fixed")[,1] kable(output[,c(1,2,7,8,6)], digits=c(2,2,2,2,3)) # 绘制单个亚组森林图 res <- data.frame("term"=c("1", "2-3", "4-5", ">5"), "estimate" = summary(mod_bsl)$coefficients[2:5,1], "conf.low" = ci[4:7,1], "conf.high"= ci[4:7,2]) res$term <- factor(res$term, levels=c("1", "2-3", "4-5", ">5")) ggplot(res, aes(y = estimate, x = term, col=term)) + geom_pointrange(aes(ymin = conf.low, ymax = conf.high), size = 0.8)+ geom_hline(yintercept = 0, linetype = "dotted", size = 1) + labs(title="MoCA-Scores in men with different coffee consumption", y = "Effect estimate on MoCA-score", x = "Consumed cups of coffee per day") + coord_flip(ylim = c(-6, 8)) + theme_bw()+ theme(legend.position="none", axis.text=element_text(size=14, face = "bold"), axis.title=element_text(size=18), plot.title = element_text(size=22))
3. 当前输出效果

4. 目标效果
希望绘制类似下图的多亚组森林图,将仅男性、仅女性、80岁以上男性、80岁以上女性等所有亚组的结果整合到同一图中:

已尝试的方法(未成功)
- 在
lmer函数中直接添加多个数据集(如dt_bsl_women、dt_bsl_men) - 使用
groupby()函数尝试批量处理亚组
内容的提问来源于stack exchange,提问作者Massimo Barbagallo
相关产品推荐
相关产品推荐

