ggalluvial中轴矩形顺序调整问题:因子层级设置无效
解决ggalluvial桑基图轴内分类排序问题
针对你遇到的axis3和axis4分类顺序不生效的问题,按以下步骤调整:
1. 同时设置两个轴的因子水平
你仅配置了axis3的因子层级,但axis4也需要手动指定因子顺序才能符合预期:
# 设定axis3的分类顺序 df$axis3_score <- factor(df$axis3_score, levels = c("0", "2", "3")) # 设定axis4的分类顺序 df$axis4_score <- factor(df$axis4_score, levels = c("low", "int", "high"))
2. 强制图层遵循因子排序规则
ggalluvial默认会根据数据频数或原始出现顺序重排分类,需在geom_stratum和geom_text中添加sort = FALSE参数,让图层严格遵循你定义的因子层级:
ggplot(df, aes(axis1 = axis1_score, axis2 = axis2_score, axis3 = axis3_score, axis4 = axis4_score, y = total_score)) + geom_flow(aes(fill = int_score, order = as.numeric(int_score)), width = 0.2) + # 添加sort = FALSE强制遵循因子顺序 geom_stratum(width = 0.2, fill = "grey", sort = FALSE) + # 文本层同步设置sort = FALSE geom_text(stat = "stratum", aes(label = after_stat(stratum)), sort = FALSE) + scale_x_discrete(limits = c("axis1", "axis2", "axis3", "axis4"), expand = c(.1, .1)) + theme_minimal()
3. 额外排查方向
若上述调整后仍未解决问题,可尝试:
- 暂时注释
geom_flow的order参数,确认是否该参数导致排序冲突 - 按因子顺序重新排列数据集:
df <- df %>% arrange(axis3_score, axis4_score)
内容的提问来源于stack exchange,提问作者Theo
相关产品推荐
相关产品推荐

