ggplot2绘图x轴月份排序异常:reorder_within无效求助
解决ggplot柱状图x轴月份顺序问题
你的问题根源在于Mes列是字符类型,ggplot默认会按字母顺序排列x轴标签,而非月份的自然顺序。reorder_within主要用于分面场景下基于数值的重排序,不适合这种自定义固定顺序的需求,解决方法如下:
方法1:将月份转为有序因子(推荐,修改数据集)
先定义葡萄牙语月份的正确顺序,再把Mes列转换为有序因子:
# 定义月份的自然顺序 month_order <- c("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho") # 将Mes列转为有序因子 de$Mes <- factor(de$Mes, levels = month_order, ordered = TRUE) # 重新绘图 ggplot(de, aes(fill=Cidade, y = Leitura, x = Mes)) + geom_bar(position='dodge', stat='identity')
方法2:直接指定x轴标签顺序(无需修改数据集)
在ggplot中通过scale_x_discrete的limits参数强制指定顺序:
ggplot(de, aes(fill=Cidade, y = Leitura, x = Mes)) + geom_bar(position='dodge', stat='identity') + scale_x_discrete(limits = c("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho"))
两种方法都能让x轴按1月到6月的自然顺序显示。
内容的提问来源于stack exchange,提问作者Guilherme Lopes de Campos
相关产品推荐
相关产品推荐

