如何按Quartiles顺序调整ggplot堆叠条形图的堆叠顺序?
解决ggplot堆叠条形图层级排序问题
你需要按Quartiles的指定顺序调整堆叠层级,同时保留Labels作为图例内容,核心是把Labels转为有序因子来控制堆叠顺序。
修改后的代码
# 将Labels转换为有序因子,对应Quartiles从大到小的顺序(Max对应Quartiles=0,放在最后以堆叠在顶部) Qs_melt$Labels <- factor(Qs_melt$Labels, levels = c("Min", "75%E", "50%E", "25%E", "Max"), ordered = TRUE) # 绘制堆叠条形图 ggplot(Qs_melt) + aes(x = variable, y = value, fill = Labels) + geom_bar(stat = "identity", position = "stack") + scale_fill_manual("Legend", values = c("Max" = 'red', '25%E' = 'orange', '50%E' = 'green', '75%E' = 'darkblue', 'Min' = 'lightblue'))
关键说明
- 因子的
levels顺序决定堆叠层级:ggplot默认将因子第一个水平放在条形最底部,最后一个水平放在顶部。这里把Max放在最后,就能让它出现在条形顶端,完全匹配Quartiles(1→0)的顺序要求。 - 图例自动沿用
Labels的因子顺序,和堆叠层级保持一致,不需要额外调整图例内容。
内容的提问来源于stack exchange,提问作者Koda
相关产品推荐
相关产品推荐

