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

