使用RStudio解决Kaplan-Meier图风险表特定时间点数据缺失问题
解决Kaplan-Meier风险表不显示720天时间点的问题
问题根源在于风险表的默认显示逻辑:ggsurvplot的风险表默认仅展示生存模型中存在事件发生或删失的时间点,以及与break.time.by生成的刻度重合的模型节点时间。你的数据里没有720天对应的事件或删失记录,因此该时间点不会被自动纳入风险表。
解决方案:强制指定风险表显示的时间点
在ggsurvplot函数中添加risk.table.times参数,明确列出需要展示的所有时间点(包括720天),确保风险表时间点与x轴刻度匹配。
修正后的完整代码:
# 加载所需包(仅首次运行时执行install.packages) # install.packages("survival") # install.packages("survminer") library(survival) library(survminer) # 创建数据 data <- data.frame( status = c(1, 0, 1, 0, 1, 0, 1, 0), time = c(100, 200, 300, 400, 500, 600, 700, 800), group = c('A', 'A', 'B', 'B', 'A', 'A', 'B', 'B') ) # 拟合Kaplan-Meier模型 fit <- survfit(Surv(time, status) ~ group, data = data) # 绘制曲线并指定风险表时间点 ggsurvplot( fit, data = data, risk.table = TRUE, risk.table.height = 0.25, xlim = c(0, 800), xscale = "d", break.time.by = 180, # 强制指定风险表要显示的时间点,包含720 risk.table.times = seq(0, 720, 180), risk.table.y.text.col = TRUE, risk.table.y.text = FALSE, risk.table.col = "strata", ggtheme = theme_minimal() )
补充说明
risk.table.times接受数值向量,可根据需求自定义展示的时间点;- 若需要显示800天的风险人数,将向量改为
seq(0, 800, 180)即可; - 注释重复的
install.packages调用,避免每次运行重复安装包。
内容的提问来源于stack exchange,提问作者Ngrt
相关产品推荐
相关产品推荐

