如何在ggcuminc中按分组设置颜色与线型并同步图例?
解决ggcuminc()按多变量分别设置颜色和线型的问题
要实现按sex设置线条颜色、按age_cat设置线条线型,且图例正常显示,不需要手动用geom_step重构,直接通过ggcuminc()的aes_list参数即可实现,具体代码和说明如下:
完整代码
library(ggsurvfit) library(tidycmprsk) # 创建额外分类变量 df_lung$age_cat <- ifelse(df_lung$age > 63, "GT63", "LTE63") df_lung$status <- factor(df_lung$status) # 按sex设颜色、age_cat设线型的竞争风险曲线 cuminc(Surv(time, status) ~ sex + age_cat, data = df_lung) %>% ggcuminc( size = 1.5, aes_list = list( color = ~sex, linetype = ~age_cat ) ) + # 自定义颜色映射 scale_color_manual(values = c("male" = "#2E86AB", "female" = "#D81E5B")) + # 自定义线型映射 scale_linetype_manual(values = c("LTE63" = "solid", "GT63" = "dashed")) + # 调整图例标题 guides( color = guide_legend(title = "性别"), linetype = guide_legend(title = "年龄分组") )
关键说明
核心参数
aes_list
默认情况下ggcuminc()会把sex+age_cat的组合作为单一strata分组,无法单独映射颜色和线型。通过aes_list参数,我们可以直接指定将sex映射到color、age_cat映射到linetype,实现多变量分别控制视觉属性。解决图例问题
之前设置linetype_aes = TRUE仅能让线型随strata变化,但无法关联到age_cat分组,因此图例无法正确对应。使用上述方法后,配合scale_*_manual和guides(),可以让颜色和线型图例分别对应各自的分组变量,显示正常。自定义样式
scale_color_manual和scale_linetype_manual中的values可以根据需求替换成任意颜色代码或线型类型(如"dotted"、"dotdash"等)。
内容的提问来源于stack exchange,提问作者Reid
相关产品推荐
相关产品推荐

