网上找破了头都没找到这个办法,只找到一堆拼图的办法
其实方法很简单,survival包自带这个函数:ggsurvplot_combine()
library(survival)library(survminer)#首先新建一个列表,包含你想要拼合的生存对象,记住一定要命名fit1、fit2等,如下所示fitlist<-list(fit1 = survfit(Surv(survivaltime,outcome)~variable1, data = yourdata),fit2 = survfit(Surv(survivaltime,outcome)~variable2, data = yourdata))#然后用ggsurvplot_combine()函数就能把以上list中的生存曲线画到一张图里了ggsurvplot_combine(fitlist,data = sfdata_pre19)
来看一下实际应用效果:先生成两张单独的生存曲线
library(tidyverse)library(survival)library(survminer)data(lung) # 加载lung数据集View(lung) # 查看数据集# 总体生存曲线fit1 <- survfit(Surv(time,status) ~ 1, data= lung)ggsurvplot(fit1, data = lung)# 性别分组的生存曲线fit2 <- survfit(Surv(time,status) ~ sex, data= lung)ggsurvplot(fit2, data = lung)
看一下拼合之后的效果
# 将两个生存对象放入一个list中fitlist <- list(fit1, fit2)# 用ggsurvplot_combine画到一张图中ggsurvplot_combine(fitlist, data = lung)
增加一些修饰让图片更美观(这部分和ggsurvplot是一样的):
# 增加一些修饰条件使图片美观ggsurvplot_combine(fitlist, data = lung,legend = c(0.75,0.75), # 图例位置legend.title = "", # 图例标题legend.labs = c("总体","男性","女性"), # 图例标签,注意顺序不要标错axes.offset = FALSE, #坐标轴刻度从原点开始xlab="生存时间 (月)",ylab="累积生存率 (%)")