R语言如何将表示星期的整数列值转换为名称以绘制有序条形图
更简洁的实现方案
共有两种可读性高、代码量更少的实现思路:
方案1:一步完成因子转换,同时指定标签和顺序
不需要先recode再fct_relevel,直接在将day_of_week转为因子时,同步设置数值对应的标签和排序规则,一步完成操作:
library(tidyverse) Graph_major_days <- week_day2 %>% mutate(day_of_week = factor(day_of_week, levels = 1:7, labels = c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"))) %>% ggplot(aes(x = day_of_week, y = n)) + geom_bar(stat = "identity")
这种方法把数值转标签、设置顺序两个操作合并为一步,逻辑连贯,不需要额外引入forcats的函数。
方案2:仅在绘图层面指定x轴顺序
如果你不想修改原数据集的字段,也可以在recode之后,直接在ggplot的轴配置里指定顺序,不需要调整字段的因子水平:
library(tidyverse) # 先完成数值转星期名称 week_day2$day_of_week <- recode(week_day2$day_of_week, "1"="Sunday", "2"="Monday", "3"="Tuesday", "4"="Wednesday", "5"="Thursday", "6"="Friday", "7"="Saturday") # 绘图时直接指定x轴排列顺序 Graph_major_days <- ggplot(week_day2, aes(x=day_of_week, y=n)) + geom_bar(stat="identity") + scale_x_discrete(limits = c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"))
内容的提问来源于stack exchange,提问作者Bry74n1
相关产品推荐
相关产品推荐

