如何用ggsurvfit绘制时间=0时的首次事件(同ggsurvplot效果)
问题
我用ggsurvfit绘制生存曲线(看中它是ggplot2对象,方便自定义美学样式),但需要让它强制展示时间=0时发生的首次事件(也就是随访刚开始就出现的事件),达到和ggsurvplot一样的效果。示例代码如下:
library(ggsurvfit) library(survminer) df <- data.frame( time = sample(0:10, 100, replace = TRUE), status = sample(0:1, 100, replace = TRUE), sex = sample(0:1, 100, replace = TRUE)) survfit2(Surv(time,status) ~ sex, df) %>% ggsurvplot() + labs(title = "ggsurvplot") survfit2(Surv(time,status) ~ sex, df) %>% ggsurvfit() + scale_y_continuous(limits=c(0,1)) + ggtitle("ggsurvfit")
注:ggsurvfit默认不会绘制时间=0处的事件曲线。
解决方法
只需要在调用ggsurvfit()时添加start_time = 0参数,就能让曲线从时间0开始展示,同时包含该时间点的事件。修改后的代码如下:
library(ggsurvfit) library(survminer) set.seed(123) # 设随机种子确保结果可复现 df <- data.frame( time = sample(0:10, 100, replace = TRUE), status = sample(0:1, 100, replace = TRUE), sex = sample(0:1, 100, replace = TRUE)) # 原ggsurvplot对比图 survfit2(Surv(time,status) ~ sex, df) %>% ggsurvplot() + labs(title = "ggsurvplot") # 带时间0事件的ggsurvfit图 survfit2(Surv(time,status) ~ sex, df) %>% ggsurvfit(start_time = 0) + # 强制包含时间0的起始点和事件 scale_y_continuous(limits=c(0,1)) + ggtitle("ggsurvfit (显示时间=0事件)")
原理
start_time = 0参数会迫使ggsurvfit生成时间0处的生存数据点,把随访开始时就发生的事件纳入曲线计算,从而和ggsurvplot的默认展示效果一致,解决了原代码中时间0事件被遗漏的问题。
内容的提问来源于stack exchange,提问作者B_slash_
相关产品推荐
相关产品推荐

