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

ggsurvplot绘图xlim截断图像及风险表轴对齐问题求助

解决ggsurvplot生存曲线的两个问题

问题说明

  • 生存曲线x轴与风险表的时间点(3、6等)未对齐
  • 18个月处图像被截断,无法读取该时间点的风险人数;设置axes.offset = T可解决截断,但会导致坐标轴无法在(0,0)处相交

解决方案及修改后代码

针对两个问题,可通过调整ggsurvplot的参数及配合ggplot2的刻度设置来解决,以下是修改后的完整代码:

library(survminer)
library(survival)

set.seed(2025)
fakedata <- data.frame(time = rexp(20, rate = log(2)/6), event = sample(x = c(0, 1), size = 20, replace = T, prob = c(0.25, 0.75)))
fakesurv <- survfit(Surv(time, event) ~ 1, data = fakedata)

ggsurvplot(fakesurv, ylab = "Progression-free survival (%)", 
           xlab = "Time since first treatment (months)", 
           xlim = c(0,18), break.x.by = 3, conf.int = F,  
           risk.table = "nrisk_cumcensor",  surv.scale = "percent", 
           tables.y.text = F, legend.title = element_blank(), 
           legend.labs = "All patients", axes.offset = F,
           # 解决x轴与风险表对齐问题
           risk.table.x.text = TRUE,
           tables.theme = theme_cleantable(),
           # 解决18个月处截断问题,同时保持坐标轴交于(0,0)
           expand.x = c(0, 0.05)) +
  scale_x_continuous(breaks = seq(0, 18, 3), limits = c(0, 18))

参数解释

  • risk.table.x.text = TRUE:显示风险表的x轴刻度文本,确保和生存曲线的x轴时间点一一对应,解决对齐问题
  • expand.x = c(0, 0.05):在x轴右侧添加极小的扩展空间,既避免18个月处的风险人数被截断,又不会破坏坐标轴在(0,0)相交的布局
  • scale_x_continuous:强制指定x轴的刻度断点和范围,保证时间点显示准确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 17:30:04