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

使用cowplot/ggarrange组合tidycmprsk::cuminc图时风险表不显示

解决tidycmprsk组合图中风险表消失的问题

问题根源

add_risktable()生成的不是普通ggplot对象,而是包含主生存图和风险表的复合gtable结构。ggarrange(ggpubr包)和cowplot的plot_grid()默认只识别标准ggplot对象,组合时会自动丢弃风险表这部分附加元素,导致最终图里看不到风险表。

可行解决方案

方案1:用patchwork包组合(推荐)

patchwork对各类ggplot扩展生成的复合图兼容性更好,能自动保留完整的绘图结构:

library(tidycmprsk)
library(ggplot2)
library(patchwork)

# 生成示例数据和带风险表的图
df <- tibble::tibble(id = c(1:10), 
                     time = c(3, 15, 8, 9, 7, 12, 18, 20, 6, 14), 
                     status = c(0, 1, 1, 1, 1, 0, 1, 0, 0, 1)) %>% 
  mutate(status = as.factor(status))

p <- cuminc(Surv(time, status)~1, data = df) %>% 
  ggcuminc() +
  add_risktable()

# 两列组合,风险表会完整保留
p + p + plot_layout(ncol = 2)

方案2:转成gtable后用ggarrange组合

如果一定要用ggarrange,先把每个带风险表的图转换为gtable对象,再传入组合:

library(ggpubr)
library(grid)

# 将复合图转为gtable
g_p1 <- ggplotGrob(p)
g_p2 <- ggplotGrob(p)

# 组合gtable对象
ggarrange(g_p1, g_p2, ncol = 2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 18:53:20