如何在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
相关产品推荐
相关产品推荐

