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

