如何调整ggplot2分组柱状图的分组排列顺序及图例顺序
解决方法
你遇到的顺序问题是因为R默认将字符串类型的sex列按字母升序排列,F的字母排序早于M,因此F默认出现在分组柱左侧。要调整M到左侧,只需要将sex转为因子类型并自定义排序顺序即可,有两种常用修改方案:
方案1:修改原数据框的sex列(推荐,全局生效)
在构造完mydata的代码后,新增一行修改sex为指定顺序的因子:
mydata$sex <- factor(mydata$sex, levels = c("M", "F"))
同时为了避免颜色和分类对应错误,建议把scale_fill_manual的颜色映射改为命名向量(不需要调整顺序也能对应正确):
scale_fill_manual(values = c("M" = "#3CBB75FF", "F" = "#95D840FF"))
方案2:仅在绘图映射中修改(不改动原数据)
直接修改ggplot的aes参数里的fill映射,无需修改原数据框:
aes(x=reorder(name,-value), y=value, fill=factor(sex, levels = c("M", "F")))
同样建议修改fill的颜色映射为命名向量,避免颜色错位。
修改完成后重新绘图,就能看到M组出现在每个分组柱的左侧,颜色对应关系也和之前保持一致。
内容的提问来源于stack exchange,提问作者LT17
相关产品推荐
相关产品推荐

