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

如何在R语言AdjustedSurv包的plot.adjustedsurv()中设置X轴范围

解决AdjustedSurv包plot.adjustedsurv()设置X轴范围无效的问题

问题说明

使用AdjustedSurv包的iptw_cox方法绘制校正生存曲线时,指定xlim = c(0,5)无法将X轴范围限制在0-5年,绘图仍会显示数据中的最长观测时间。

解决方案

有两种可靠的解决方式:

方法1:提前限制校正生存曲线的计算时间范围

plot.adjustedsurv()的X轴范围默认由adjustedsurv()计算时的时间点决定,因此在计算校正生存曲线时直接指定时间范围为0-5年,绘图时自然会匹配该范围:

# 拟合校正生存曲线时,指定times参数限制计算的时间点
adjsurv_selected <- adjustedsurv(data = data,
                                 variable = "AAA_size",
                                 ev_time = "Surv_years",
                                 event = "DEAD",
                                 method = "iptw_cox",
                                 treatment_model = glm_mod,
                                 times = seq(0, 5, by = 0.1))  # 生成0到5年的序列时间点

# 绘图时xlim参数会正常生效,甚至可省略xlim
p1 <- plot(adjsurv_selected, 
           conf_int = FALSE,
           xlab = "Years",
           ylab = "Adjusted Survival Probability",
           risk_table = TRUE,
           risk_table_stratify = TRUE,
           risk_table_title = "AAA size",
           risk_table_ylab = "AAA size",
           title = "Adjusted Survival Curve Stratified by AAA Size",
           legend.labs = levels(data$AAA_size),
           legend.title = "AAA size",
           xlim = c(0,5))

方法2:通过ggplot2修改已生成的绘图对象

plot.adjustedsurv()返回的是ggplot对象,可直接用ggplot的图层函数强制修改X轴范围,推荐使用coord_cartesian()(不会过滤数据,仅缩放视图,能保证风险表与曲线对齐):

# 按原代码生成绘图对象
p1 <- plot(adjsurv_selected, 
           conf_int = FALSE,
           xlab = "Years",
           ylab = "Adjusted Survival Probability",
           risk_table = TRUE,
           risk_table_stratify = TRUE,
           risk_table_title = "AAA size",
           risk_table_ylab = "AAA size",
           title = "Adjusted Survival Curve Stratified by AAA Size",
           legend.labs = levels(data$AAA_size),
           legend.title = "AAA size")

# 强制设置X轴范围为0-5年
p1 <- p1 + coord_cartesian(xlim = c(0, 5))

# 显示图形
print(p1)

注意事项

  • 如果使用xlim()替代coord_cartesian(),会过滤掉X轴超过5的观测数据,可能导致风险表的时间点与曲线不匹配,因此优先选择coord_cartesian()。
  • 方法1从根源上限制了计算的时间范围,更适合需要严格控制生存曲线计算区间的场景。

内容的提问来源于stack exchange,提问作者IsaFleurvG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 09:37:05