如何在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
相关产品推荐
相关产品推荐

