首页 > 解决方案 > ggplot:按工作日排序

问题描述

有人可以告诉我如何更改工作日的顺序,以便周一先到,周日到最后?(对不起,我的语言设置是德语)

library(lubridate)
library(dplyr)

df <- data.frame(dat = as.POSIXlt(c("2021-01-04 00:00:01", 
"2021-01-2 00:00:01",
"2021-01-03 00:00:01", 
"2021-01-03 00:00:01", 
"2021-01-01 00:00:01", 
"2021-01-06 00:00:01", 
"2021-01-07 00:00:01", 
"2021-01-08 00:00:01"))) %>%
  mutate(weekday = weekdays(dat))

ggplot(df, aes(x = weekday)) + geom_bar()

在此处输入图像描述

标签: rggplot2lubridate

解决方案


您可以按您想要的顺序设置因子水平。

library(dplyr)
library(ggplot2)

df <- data.frame(dat = as.POSIXlt(c("2021-01-04 00:00:01", 
                                    "2021-01-2 00:00:01",
                                    "2021-01-03 00:00:01", 
                                    "2021-01-03 00:00:01", 
                                    "2021-01-01 00:00:01", 
                                    "2021-01-06 00:00:01", 
                                    "2021-01-07 00:00:01", 
                                    "2021-01-08 00:00:01"))) %>%
  mutate(weekday = weekdays(dat), 
         weekday = factor(weekday, c('Montag', 'Dienstag', 'Mittwoch', 
                    'Donnerstag', 'Freitag', 'Samstag', 'Sonntag')))

ggplot(df, aes(x = weekday)) + geom_bar()

推荐阅读