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

使用ggsurvplot绘制生存曲线:移除图例中的“censored”标记

解决ggsurvplot保留截尾标记但移除图例中截尾标记的问题

嘿,我明白你遇到的麻烦了——黑白图里图例的截尾标记确实会挡住线型,导致分组难以区分,加宽图例又太占空间。之前试guides(shape=F)没成功,是因为ggsurvplot的图例把颜色和形状映射绑定在一起了,直接关闭shape图例项不生效,得换个方式调整。

下面给你一个靠谱的解决方案,用最小示例演示:

首先,先准备基础的生存曲线代码:

library(survival)
library(survminer)

# 拟合生存模型(用内置的lung数据集举例)
fit <- survfit(Surv(time, status) ~ sex, data = lung)

# 生成带截尾标记的生存曲线
p <- ggsurvplot(fit, data = lung, censor = TRUE)

接下来,我们需要修改图例,只保留线型/颜色标记,移除截尾的形状标记:

# 调整图例,移除其中的截尾形状
p$plot + guides(
  # 让颜色图例里的shape显示为无,这样就不会遮挡线型
  color = guide_legend(override.aes = list(shape = NA)),
  # 彻底关闭单独的shape图例项
  shape = "none"
)

这样操作后,图中的截尾标记会完整保留,但图例里只会显示分组的线型和颜色,再也不会被截尾标记挡住啦!

如果你的分组标签比较长,还可以顺便调整图例文字大小,避免图例过宽:

p$plot + guides(
  color = guide_legend(override.aes = list(shape = NA)),
  shape = "none"
) + theme(legend.text = element_text(size = 8)) # 按需调整字号

原理其实很简单:override.aes是专门用来修改图例中映射属性的参数,我们把图例里的shape设为NA,就不会显示截尾标记了;而图中的截尾标记是由censor=TRUE控制的,完全不受图例调整的影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:46:43