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

如何为ggsurvfit绘制的单分组KM生存曲线添加图例

为ggsurvfit绘制的KM生存曲线添加图例

核心问题说明

你当前代码中使用 survfit2(Surv(time, status) ~ 1, data = df_colon) 进行的是无分组的单组生存分析(~1 代表仅拟合整体人群的生存曲线),因此绘图默认不会生成图例。以下根据两种常见需求给出解决方案:


需求1:按分组变量绘制曲线并自动生成图例

如果你实际存在分组变量(比如治疗方案treatment、性别sex等),只需将公式中的~1替换为分组变量,并把颜色/填充参数映射到该变量即可:

library(ggsurvfit)
# 替换treatment为你的实际分组变量名
survfit2(Surv(time, status) ~ treatment, data = df_colon) %>%
  ggsurvfit(aes(color = treatment)) +  # 颜色映射到分组变量
  add_confidence_interval(aes(fill = treatment)) +  # 置信区间填充色同步映射
  add_risktable() +
  scale_ggsurvfit() +
  labs(color = "分组类型", fill = "分组类型")  # 自定义图例标题

运行后会自动按分组生成不同颜色的曲线,并匹配对应图例。


需求2:为单组曲线手动添加图例

如果确实是单组分析,但需要标注曲线代表的人群,可通过手动构建图例实现:

library(ggsurvfit)
library(ggplot2)

survfit2(Surv(time, status) ~ 1, data = df_colon) %>%
  ggsurvfit(color = "#508050") +
  add_confidence_interval(fill = "#508050") +
  add_risktable() +
  scale_ggsurvfit() +
  # 手动设置图例内容
  scale_color_manual(values = "#508050", labels = "整体人群") +
  scale_fill_manual(values = "#508050", labels = "整体人群") +
  labs(color = "人群分组", fill = "人群分组") +
  guides(fill = guide_legend(override.aes = list(alpha = 0.3)))  # 调整置信区间图例的透明度

内容的提问来源于stack exchange,提问作者Bharath kumar TAMATAMALA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 00:59:59