如何在survminer::ggsurvplot()中添加自定义表格?
解决方案:将自定义表格与Kaplan-Meier图拼接
ggsurvplot本身没有直接参数支持传入自定义表格替换默认风险表,你需要通过绘图拼接工具手动将KM图和自定义表格组合在一起,常用工具为patchwork或ggpubr::ggarrange,以下是具体实现步骤:
1. 绘制基础KM图
先完成不带默认风险表的KM图绘制(补全代码闭合括号并提取ggplot对象):
library(survival) library(survminer) library(tidyverse) library(stringr) # 生成生存分析对象 km1 <- survfit(Surv(aval,cnsr)~trt01a+aesoc, data=adae2) # 绘制KM图并提取ggplot对象 p <- ggsurvplot(km1, data = adae2, risk.table = FALSE, legend='none', title=paste0('SOC: ', aesoc), ggtheme=theme_classic(), tables.theme=theme_classic())$plot
2. 处理自定义表格并转为ggplot格式
用ggpubr::ggtexttable将你的newtable2转换为与KM图风格统一的表格(先修复原代码中str_extract_all返回列表的问题):
library(ggpubr) # 生成并整理自定义表格 newtable1 <- summary(survfit(Surv(aval,cnsr)~trt01a+aesoc, data=adae2))$table newtable2 <- tibble::rownames_to_column(as.data.frame(newtable1), 'grp') %>% mutate(grp = str_extract(grp,'(?<=\\=).*(?=\\,)')) # 提取分组字符串,返回单个字符而非列表 # 转换为ggplot格式表格 table_plot <- ggtexttable(newtable2, rows = NULL, # 隐藏默认行名 theme = ttheme("classic") # 匹配KM图的classic主题 ) %>% tab_add_title(text = "自定义风险表", face = "bold") # 可选:添加表格标题
3. 拼接KM图与自定义表格
选择以下任意一种方式完成拼接:
方法1:使用patchwork(推荐)
library(patchwork) # 上下拼接,调整图与表格的高度比例 p / table_plot + plot_layout(heights = c(3, 1))
方法2:使用ggpubr::ggarrange
ggarrange(p, table_plot, nrow = 2, heights = c(3, 1)) # 控制图与表格的高度占比
额外调整提示
- 若需要修改表格样式(字体大小、颜色、对齐方式),可在
ggtexttable的theme参数中自定义,例如ttheme_classic(base_size = 10)调整字体大小; - 可通过
rename()函数修改newtable2的列名,提升表格可读性。
内容的提问来源于stack exchange,提问作者jkatam
相关产品推荐
相关产品推荐

