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

如何用ggarrange组合带风险表的多面板生存曲线?

解决survminer带风险表生存曲线的组合问题

问题描述

我使用survminer包生成了包含风险表的生存曲线对象sequence和histology,单独用ggarrange组合其中的生存曲线(即对象的$plot元素)可以成功,但直接组合整个包含风险表的对象却无法运行。已知ggsurvplot的输出是包含绘图和表格的列表,而ggarrange仅支持grob对象作为输入,请问如何将绘图和表格元素合并为可被ggarrange组合的grob?

解决方案

ggsurvplot返回的列表包含plot(生存曲线)和table(风险表)等核心元素,我们需要先将每个对象的生存曲线与风险表合并为单个grob,再用ggarrange进行组合。以下是具体实现步骤:

1. 加载所需包(未安装需先执行安装命令)

install.packages(c("gridExtra", "ggplot2", "ggpubr", "survminer"))
library(gridExtra)
library(ggplot2)
library(ggpubr)
library(survminer)

2. 读取数据

sequence <- readRDS("sequence.rds")
histology <- readRDS("histology.rds")

3. 将单个生存曲线与风险表合并为grob

通过arrangeGrob将每个对象的生存曲线和风险表垂直排列,可调整高度比例让曲线部分占比更合理:

# 合并sequence的曲线与风险表
sequence_combined <- arrangeGrob(
  sequence$plot, 
  sequence$table, 
  ncol = 1, 
  heights = c(3, 1)  # 曲线与风险表高度比为3:1,可按需调整
)

# 合并histology的曲线与风险表
histology_combined <- arrangeGrob(
  histology$plot, 
  histology$table, 
  ncol = 1, 
  heights = c(3, 1)
)

4. 组合两个带风险表的生存曲线grob

现在可以用ggarrange直接组合这两个已合并的grob对象:

combined_final <- ggarrange(
  sequence_combined, 
  histology_combined,
  labels = c("A", "B"),
  font.label = list(size = 24),
  ncol = 2, 
  nrow = 1
)

# 查看最终组合图
combined_final

原理说明

ggsurvplot返回的是包含多个元素的列表,而非单一的grob或ggplot对象,因此无法直接被ggarrange识别。通过arrangeGrob将列表中的plot和table合并为单个grob后,就符合ggarrange的输入要求,从而实现带风险表的生存曲线的横向/纵向组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:05:23