网上找破了头都没找到这个办法,只找到一堆拼图的办法
其实方法很简单,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="累积生存率 (%)"
)