如何在R语言中绘制两个数据集的生存曲线于同一图中
嘿,作为刚接触R语言生存分析的新手,能独立画出单条生存曲线已经超棒啦!要把两条曲线放在同一图里对比其实很简单,我给你两种实用方法,你可以按需选择~
方法一:基础R绘图(无需额外安装包)
首先先确保你正确拟合了两个数据集的生存模型(帮你修正了代码里没写完的部分):
# 拟合ConKRAS数据集的生存曲线 km_fit_con <- survfit(Surv(SurvivalTime, Status) ~ 1, data = ConKRAS) # 拟合DisKRAS数据集的生存曲线 km_fit_dis <- survfit(Surv(SurvivalTime, Status) ~ 1, data = DisKRAS)
注意:如果DisKRAS里的生存时间/结局变量名和ConKRAS不一样,记得把
SurvivalTime和Status换成对应变量名哦!
接下来先画第一条曲线,再用add=TRUE参数把第二条曲线叠加上去,最后加个图例区分组别:
# 绘制第一条曲线,设置标题和坐标轴标签 plot(km_fit_con, main = "ConKRAS vs DisKRAS 生存曲线对比", xlab = "生存时间", ylab = "生存率", col = "darkblue") # 叠加第二条曲线,用不同颜色区分 plot(km_fit_dis, add = TRUE, col = "darkred") # 添加图例,放在右上角 legend("topright", legend = c("ConKRAS组", "DisKRAS组"), col = c("darkblue", "darkred"), lty = 1) # lty=1代表实线,和生存曲线的线型一致
方法二:用survminer包绘制更美观的专业曲线
如果想要更精致、适合论文的生存曲线,推荐用survminer包,它能自动生成图例、还能轻松添加log-rank检验的p值:
首先先安装并加载包:
install.packages("survminer") library(survminer)
步骤1:合并两个数据集(更方便拟合分组模型)
把两个数据集合并,同时添加一个分组变量标记来源:
combined_data <- rbind( # 给ConKRAS加分组标签 transform(ConKRAS, group = "ConKRAS"), # 给DisKRAS加分组标签 transform(DisKRAS, group = "DisKRAS") )
步骤2:拟合分组生存模型并绘图
# 拟合合并后的分组生存模型 km_fit_combined <- survfit(Surv(SurvivalTime, Status) ~ group, data = combined_data) # 绘制对比曲线,可自定义样式 ggsurvplot(km_fit_combined, main = "ConKRAS vs DisKRAS 生存曲线对比", xlab = "生存时间", ylab = "生存率", palette = c("darkblue", "darkred"), # 设置曲线颜色 legend = "topright", # 图例位置 legend.title = "组别", # 图例标题 legend.labs = c("ConKRAS", "DisKRAS"), # 图例标签 pval = TRUE, # 可选:添加log-rank检验的p值 risk.table = TRUE # 可选:添加风险人数表格 )
小提醒
- 确认你的
Status变量格式正确:一般0代表删失(未发生事件),1代表事件发生(比如死亡、复发),如果你的编码反过来也没关系,survfit会自动识别,但最好提前确认哦~ - 如果两个数据集的变量名不一致,一定要在
Surv()函数里替换成对应数据集的变量名!
内容的提问来源于stack exchange,提问作者kmardinian
相关产品推荐
相关产品推荐

