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

如何在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 = "年龄分组")
  )

关键说明

  1. 核心参数aes_list
    默认情况下ggcuminc()会把sex+age_cat的组合作为单一strata分组,无法单独映射颜色和线型。通过aes_list参数,我们可以直接指定将sex映射到color、age_cat映射到linetype,实现多变量分别控制视觉属性。

  2. 解决图例问题
    之前设置linetype_aes = TRUE仅能让线型随strata变化,但无法关联到age_cat分组,因此图例无法正确对应。使用上述方法后,配合scale_*_manual和guides(),可以让颜色和线型图例分别对应各自的分组变量,显示正常。

  3. 自定义样式
    scale_color_manual和scale_linetype_manual中的values可以根据需求替换成任意颜色代码或线型类型(如"dotted"、"dotdash"等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 17:03:20