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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:50:35