r - 使用 lubridate 和 ggplot 在条形图中的工作日顺序
问题描述
在创建 x 轴为工作日的条形图时(使用 lubridate 和 ggplot),我的工作日顺序不遵循时间顺序“周一、周二、周三...”
我试图复制这个问题,但正如你在下面看到的,在我的复制中,x 轴上的标签顺序如果没问题的话。
library(lubridate)
library(dplyr)
my_data <- data.frame(dates = sample(seq(as.Date('2010/01/01'), as.Date('2020/01/01'), by="day"), 100),
group = rep(c(1,2,3,4), times = 5))
my_data <- my_data %>%
mutate(Weekdays = wday(dates, label = TRUE)) %>%
filter(Weekdays != "Sat" &
Weekdays != "Sun")
ggplot(my_data, aes(Weekdays))+
geom_bar()+
facet_wrap(~group)
输出:
下面的代码是我对真实数据使用的。如您所见,工作日不按顺序排列。我不确定我的实际代码与上面尝试的复制在哪里不同。
library(ggplot2)
df1 <- filter(df, wday != "Sat")
ggplot(df1, aes(x = wday))+
geom_bar()+
facet_wrap(~Grouping)+
theme(axis.text.x = element_text(angle =90, hjust = 1))
输出:
任何帮助/建议将不胜感激。
解决方案
我认为这将是解决方案
my_data %>%
mutate(weekday = fct_reorder(weekdays(dates, abbreviate = TRUE), # generating week days
wday(dates))) %>%
filter(!weekday %in% c("Sat", "Sun")) %>% # here you filter saturday and sunday
ggplot(aes(weekday)) +
geom_bar() +
facet_wrap(~ group)
如您所见, wday 函数给出了可与 fct_reorder 函数一起使用的有序数字。
推荐阅读
- css - 动态更改css文件中背景图像的url路径
- python - Pandas 滚动求和过滤信号
- html - 重定向到另一个端口的按钮(后退按钮)
- r - 如何将 copula 的边缘建模为 R 中的学生 t 分布
- algorithm - 在多张发票上分配一笔款项
- django - django-rest ModelSerializer 选择要在嵌套关系中显示的字段
- android - 如何在 kotlin 中使用 http 请求将图像上传到服务器?
- r - 在 xgboost 中使用文档术语矩阵
- firebase - Firebase 用户属性 - 如何正确存储列表值?
- vue.js - 如何解决 Vue 生产构建中的 CORS 策略问题?