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

