You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 03:02:39