如何让R语言中ggplot的X轴生成随机排列的月份名称?
解决ggplot中月份X轴随机排列的问题
以下代码生成的柱状图,X轴的月份会呈现随机排列状态,无法按1月到12月的自然顺序展示:
DF <- data.frame(Month = 1:12, Val = runif(12,5,35)) %>% mutate(Month = month.name[Month]) ggplot(DF, aes(x = Month, y = Val))+ geom_bar(stat="identity")
问题原因
代码中通过month.name[Month]生成的月份名称是字符类型,ggplot默认会对字符型的X轴变量按字母顺序排序,而非月份的自然顺序,导致排列混乱。
解决方法
将月份列转换为有序因子,明确指定排序的层级为月份的自然顺序:
DF <- data.frame(Month = 1:12, Val = runif(12,5,35)) %>% mutate(Month = factor(month.name[Month], levels = month.name, ordered = TRUE)) ggplot(DF, aes(x = Month, y = Val))+ geom_bar(stat="identity")
通过factor(..., levels = month.name)指定排序依据为系统自带的month.name向量顺序(从1月到12月),ordered = TRUE标记为有序因子,这样ggplot就会按照自然月份顺序渲染X轴。
内容的提问来源于stack exchange,提问作者Hydro
相关产品推荐
相关产品推荐

