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

解决ggsurvplot生存曲线右侧标注时风险表文本截断问题(短标签)

解决ggsurvplot指定结束时间后风险表文本截断问题

问题说明

用ggsurvplot绘制生存曲线时,指定结束时间time_cutoff并在曲线末端添加标注后,风险表最右侧的数值(比如实际是20、21)会被截断,只显示开头的2、2。如果直接扩大x轴右侧范围,虽然风险表文本正常了,但生存曲线会延伸到超出time_cutoff的位置,而且末端标注和曲线对不齐。

解决方案

核心思路是给图表预留足够的右侧空间,但只显示到指定结束时间,同时关闭绘图区域的裁剪限制,配合调整边距确保内容完整显示。修改后的代码如下:

library(survival)
library(survminer)
library(patchwork)

fit <- survfit(Surv(time, status) ~ sex, data = lung)

# 初始化生存曲线绘图,预设刻度间隔方便后续对齐
my_plot <- ggsurvplot(fit, data = lung,
                      risk.table = TRUE,
                      tables.height = 0.2,
                      ggtheme = theme_bw(),
                      break.time.by = 250
)

time_cutoff <- 500
xticks <- c(0, 250, 500)
survs <- summary(fit, times = time_cutoff)$surv
labels <- paste(round(survs*100), '%', sep='')

# 处理生存曲线:控制显示范围,预留空间,关闭裁剪
my_plot$plot <- my_plot$plot + 
  coord_cartesian(ylim = c(0,1), xlim = c(-50, time_cutoff), clip = 'off') +
  scale_x_continuous(name = NULL, breaks = xticks, limits = c(-50, time_cutoff + 50)) +
  scale_y_continuous(name = NULL, sec.axis = sec_axis(~., name = NULL, breaks = survs, labels = labels)) +
  theme(plot.margin = margin(5.5, 20, 5.5, 5.5))  # 右侧留边避免标注被截

# 处理风险表:匹配曲线的x轴范围,确保数值完整显示
table_ylim <- ggplot_build(my_plot$table)$layout$panel_params[[1]]$y.range
my_plot$table <- my_plot$table + 
  coord_cartesian(ylim = table_ylim, xlim = c(-50, time_cutoff + 50), clip = 'off') +
  scale_x_continuous(name = NULL, breaks = xticks) +
  theme(plot.margin = margin(5.5, 20, 5.5, 5.5))

# 组合生存曲线和风险表
(my_plot$plot / my_plot$table) + plot_layout(heights = c(3,1))

关键修改点解释

  1. 生存曲线的x轴设置:

    • scale_x_continuous的limits参数设置为c(-50, time_cutoff + 50),给图表右侧预留足够空间显示风险表文本;
    • 用coord_cartesian的xlim限制显示范围到time_cutoff,确保生存曲线只绘制到指定结束时间;
    • clip='off'关闭绘图区域的裁剪,让曲线末端的标注不会被切掉。
  2. 风险表的对齐处理:

    • 风险表的x轴范围和生存曲线保持一致,确保刻度和数值的位置对齐;
    • 同样关闭裁剪并调整右侧边距,让最右侧的风险数值完整显示。
  3. 预设刻度间隔:初始化绘图时设置break.time.by=250,让风险表的初始刻度和后续自定义的xticks匹配,减少对齐偏差。

内容的提问来源于Stack Exchange,提问作者Gordon Lemmon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:01:10