R语言Order Stacked Bars Plot堆叠条形图按指定顺序排列求助
问题核心原因
ggplot2中堆叠条形图的分段顺序完全由fill映射变量的因子水平顺序决定,和数据集本身的行排序无关,你之前调整因子水平时没有手动指定正确的排序规则,所以没有生效。
具体修改步骤
1. 手动指定Scale列的因子水平
按你需要的堆叠顺序设置即可,两种常用顺序参考:
- 如果需要堆叠从下到上为
1→5(1 - No value at all在最底部,5 - Extremely valuable在最顶部):
breakstablemelt$Scale <- factor(breakstablemelt$Scale, levels = c("1 - No value at all", "2", "3", "4", "5 - Extremely valuable"))
- 如果需要堆叠从下到上为
5→1,把levels顺序反过来即可:
breakstablemelt$Scale <- factor(breakstablemelt$Scale, levels = c("5 - Extremely valuable", "4", "3", "2", "1 - No value at all"))
2. 处理value列格式
你当前数据集的value列是带%的字符型,直接映射到y轴会出现识别错误,需要先转成数值型:
breakstablemelt$value <- as.numeric(sub("%", "", breakstablemelt$value))
3. 运行绘图代码
原绘图代码无需额外调整,直接运行即可得到对应排序的堆叠条形图:
ggplot(breakstablemelt,aes(x=variable, y=value,fill=Scale))+ geom_bar(stat="identity")+ coord_flip()+ labs(title="title", x="Q10", y=NULL)
内容的提问来源于stack exchange,提问作者Caroline Sinclair
相关产品推荐
相关产品推荐

