R语言中如何调整柱状图柱子的顺序?

导入的csv文件中的数据是按照春夏秋冬排列的,但是画出来的图没有按照春夏秋冬的顺序排列。之前图例也不是春夏秋冬的顺序,后来用breaks=c("Spr…
关注者
6
被浏览
31,743

5 个回答

对数据进行下预处理:对变量seasons的不同level进行排序,后续再做ggplot应该就没问题

newrow$seasons<- factor(newrow$seasons,
    levels = c('spring','summer','fall','winter'),ordered = TRUE)

@Jeff 回答一样,安利 tidyverse 中的 forcats 包,专门用来处理因子及其顺序的问题,特别是在在 ggplot2 的图形调整顺序中非常实用。


# ggplot2 控制分类变量的显示顺序,都是通过因子的水平顺序来实现的
# 故而调整 newrow$Seasons 的 level 顺序即可
# forcats 包中的 fct_relevel() 函数可方便手动调整顺序
# 官方文档 https://forcats.tidyverse.org/reference/fct_relevel.html
library(forcats)
Seasons <- as.factor(c("Spring","Summer","Fall","Winter"))
newrow <- data.frame(Seasons = Seasons)
# 调整前默认的水平顺序 Fall Spring Summer Winter
newrow$Seasons
# [1] Spring Summer Fall   Winter
# Levels: Fall Spring Summer Winter
newrow$Seasons <- fct_relevel(newrow$Seasons, c("Spring","Summer","Fall","Winter"))
# 经过手动调整因子水平顺序后,就按照 Spring Summer Fall Winter