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

如何在R中将脚注置于风险表下方(非KM图与风险表之间)

解决Kaplan-Meier图脚注位置问题

你遇到的问题是因为ggsurvfit结合add_risktable后生成的是patchwork组合图形(主生存图+风险表),ggplot原生的labs(caption=...)只会作用在主生存图上,所以脚注会卡在主图和风险表之间。用下面两种方法可以把脚注移到整个图形的最下方:

方法1:用patchwork的plot_annotation()添加脚注

这是最简洁的方案,直接替换原代码中的labs里的caption部分:

survfit2(Surv(time, status) ~ surg, data = df_colon) %>%
  ggsurvfit() +   
  add_confidence_interval() +   
  add_risktable() +   
  scale_color_grey() +   
  scale_fill_grey() +   
  labs(title = "Grey Scale") +  # 保留标题,把caption移到plot_annotation里
  plot_annotation(caption = "Figure1: Kaplan Meier Graph of Surgery status ")

原理:plot_annotation()是patchwork包的函数,专门给组合图形添加全局标题、脚注等,它的caption会自动放在整个组合图的最底部,完美避开风险表的位置。

方法2:手动用grid包添加脚注(备选)

如果不想依赖patchwork的语法,也可以用grid包在图形绘制完成后手动添加文本:

library(grid)

# 先绘制图形并保存
p <- survfit2(Surv(time, status) ~ surg, data = df_colon) %>%
  ggsurvfit() +   
  add_confidence_interval() +   
  add_risktable() +   
  scale_color_grey() +   
  scale_fill_grey() +   
  labs(title = "Grey Scale")

# 绘制图形
print(p)

# 在图形底部添加脚注
grid.text("Figure1: Kaplan Meier Graph of Surgery status ", 
          x = 0.5, y = 0.02,  # 调整y值控制垂直位置,0是最底部,1是最顶部
          gp = gpar(fontsize = 10))  # 设置字体大小

这种方法需要手动调整y坐标来找到合适的位置,灵活性高但不如第一种方法省心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 23:47:07