使用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
相关产品推荐
相关产品推荐

