ggplot中geom_col排序异常:如何调整奖牌分类的柱状条展示顺序
解决方案
你遇到的问题是ggplot默认横向分组柱状图的分组排列顺序为因子层级从下到上排列,和你预期的从上到下按金、银、铜展示的需求刚好反向,按照如下两个方案调整均可:
方案1:调整dodge排列顺序(推荐)
直接修改geom_col的position参数,把原来的position = "dodge"替换为手动指定reverse参数的dodge对象,不需要修改已经设置好的因子层级,也不会影响图例的排序:
把原来的geom_col代码:
geom_col(aes(x = n, y = country, fill = Final_Medal), position = "dodge", width = 0.7)
替换为:
geom_col(aes(x = n, y = country, fill = Final_Medal), position = position_dodge(width = 0.7, reverse = TRUE), width = 0.7)
方案2:调整fill映射的层级顺序
如果不想修改position参数,也可以通过scale_fill调整展示顺序,在现有代码的scale_y_discrete行之后添加对应代码即可:
# 如果可以接受图例也反向,直接加这一行 scale_fill_discrete(limits = rev) # 如果需要图例保持金、银、铜的顺序,加这一行 scale_fill_discrete(limits = rev, breaks = c("GOLD", "SILVER", "BRONZE"))
额外提示
你现有代码的theme函数最后缺少右括号),补全后代码才能正常运行。
内容的提问来源于stack exchange,提问作者OMG C
相关产品推荐
相关产品推荐

