如何调整ggcuminc绘图中图例的分组显示顺序?
解决ggcuminc绘图图例顺序不匹配因子级别的问题
问题根源
你当前的代码里,绘图时用的是原变量grade,而非你调整过因子级别的grade2,所以系统还是按grade的默认逻辑排序;另外即使使用了正确的变量,ggcuminc有时会默认按字母顺序渲染图例,需要手动指定顺序。
解决方案
- 确保绘图使用调整后的因子变量:把公式里的
grade换成grade2 - 强制锁定因子顺序:用
fct_relevel明确指定级别顺序(保险操作) - 手动指定图例顺序:通过ggplot的
scale_color_discrete和scale_fill_discrete固定图例展示顺序
修改后的代码示例
library(tidyverse) library(survival) library(ggsurvfit) # 处理因子并强制指定顺序 trial2 <- trial %>% mutate(grade2 = fct_recode(grade, one = "I", two = "II", three = "III") %>% fct_relevel("one", "two", "three")) # 确认因子级别 levels(trial2$grade2) # [1] "one" "two" "three" # 绘图并设置图例顺序 p2 <- cuminc(Surv(ttdeath, death_cr) ~ grade2, data = trial2) %>% ggcuminc() + scale_color_discrete(breaks = levels(trial2$grade2)) + scale_fill_discrete(breaks = levels(trial2$grade2))
说明
fct_relevel会强制把指定的级别按顺序排列,避免因原数据的潜在问题导致顺序变动scale_color_discrete和scale_fill_discrete的breaks参数直接对应因子的级别顺序,让图例严格遵循你设置的one -> two -> three顺序展示
内容的提问来源于stack exchange,提问作者user23416006
相关产品推荐
相关产品推荐

