如何使用survminer::ggforest绘制符合学术发表要求的彩色森林图
survminer::ggforest绘制学术适配彩色森林图操作指南
ggforest本身没有开放自定义配色的参数,不需要修改包底层源码,两种新手可直接复用的方案如下,配色默认选用顶刊常用的低饱和友好色,符合学术发表要求。
小提示:你提供的原始绘图代码末尾多了1个右括号,运行前记得删除,否则会触发语法报错。
方法1:直接覆写ggplot图层(最推荐,零风险)
ggforest输出的对象本质是标准ggplot2对象,直接叠加颜色标度层即可修改配色,不需要改动任何函数内部逻辑,操作最安全。
操作步骤
- 先安装依赖包(已安装可跳过)
install.packages(c("survival", "survminer", "ggplot2", "ggsci"))
- 运行绘图代码,直接复用即可:
# 加载包 library(survival) library(survminer) library(ggplot2) library(ggsci) # 构建多因素Cox模型(和你原有代码一致) multi_variate_cox <- coxph(formula = Surv(futime, fustat) ~ A + B + C, data = train_tpm) # 生成基础森林图 train_ggforest <- ggforest( model = multi_variate_cox, data = train_tpm, main = 'Hazard ratios of candidate genes' ) # 覆写配色+优化学术风格主题 train_ggforest <- train_ggforest + # 自定义配色:危险因素(HR>1)用砖红、保护因素(HR<1)用深蓝、参考线用中性灰 # 色值取自Lancet期刊官方配色,印刷辨识度高、无审美偏差 scale_color_manual( values = c( " " = "#00468B", " " = "#ED0000", " " = "#555555" ), guide = "none" ) + # 可选:替换为简洁的学术主题 theme_bw(base_size = 12) + theme( panel.grid.minor = element_blank(), panel.grid.major.y = element_blank(), plot.title = element_text(hjust = 0.5, face = "bold") ) # 输出图片 print(train_ggforest)
如果需要换其他期刊适配配色,把scale_color_manual(...)替换为ggsci包内置的标度函数即可,不需要手动调色:
- Nature系列期刊配色:
scale_color_npg() - Science系列期刊配色:
scale_color_aaas() - JAMA系列期刊配色:
scale_color_jama()
方法2:临时修改函数默认值(适合批量出图场景)
如果需要批量绘制多张森林图,可通过trace()函数临时给ggforest注入配色规则,不需要每次手动叠加图层,重启R会话后会自动恢复默认设置,不会破坏原包文件。
# 注入自定义配色规则 trace( what = ggforest, tracer = quote({ col <- list( hr.pos = "#ED0000", # HR>1 危险因素颜色 hr.neg = "#00468B", # HR<1 保护因素颜色 ref = "#555555" # HR=1参考线颜色 ) }), at = 1 ) # 之后直接调用ggforest即可生成彩色图,无需额外修改 train_ggforest <- ggforest( model = multi_variate_cox, data = train_tpm, main = 'Hazard ratios of candidate genes' ) # 需要恢复默认黑白色时运行以下代码即可 untrace(ggforest)
学术配色选择注意事项
- 优先选低饱和度、红/蓝(或暖/冷)强对比组合,避免用高饱和荧光色,防止印刷失真
- 参考线选用中灰色即可,不要用纯黑,避免抢夺核心结果(HR点、置信区间)的视觉权重
- 若投稿目标期刊有明确配色规范,直接取官方色值替换即可,不需要额外设计风格
内容的提问来源于stack exchange,提问作者Alen
相关产品推荐
相关产品推荐

