R 在ggplot的x轴上显示工作日和时间

R 在ggplot的x轴上显示工作日和时间,r,ggplot2,weekday,R,Ggplot2,Weekday,我有一个包含事件的数据集。这些事件有开始时间和持续时间。我想创建一个散点图,在x轴上显示开始时间,在y轴上显示持续时间,但我想改变x轴,以便它显示一周的过程。也就是说,我希望x轴从周一00:00开始,一直到周日23:59 我在网上找到的所有解决方案都向我展示了如何在工作日执行分组和求和,这不是我想要做的。我想单独绘制所有数据点,我只想将日期轴缩短为工作日和时间 有什么建议吗?这正是您需要的。它所做的是创建一个新的变量,将每个观察值放在一周内,然后以必要的格式生成散点图 library(lubri

我有一个包含事件的数据集。这些事件有开始时间和持续时间。我想创建一个散点图,在x轴上显示开始时间,在y轴上显示持续时间,但我想改变x轴,以便它显示一周的过程。也就是说,我希望x轴从周一00:00开始,一直到周日23:59

我在网上找到的所有解决方案都向我展示了如何在工作日执行分组和求和,这不是我想要做的。我想单独绘制所有数据点,我只想将日期轴缩短为工作日和时间


有什么建议吗?

这正是您需要的。它所做的是创建一个新的变量,将每个观察值放在一周内,然后以必要的格式生成散点图

library(lubridate)
library(dplyr)

set.seed(1)
tmp <- data.frame(st_time = mdy("01-01-2018") + minutes(sample(1e5, size = 100))) 
tmp <- tmp %>% 
    mutate(st_week = floor_date(st_time, unit = 'week')) %>% # calculate the start of week
    mutate(st_time_inweek = st_time - st_week) %>% # calculate the time elapsed from the start of the week
    mutate(st_time_all_in_oneweek = st_week[1] + st_time_inweek) %>% # put every obs in one week
    mutate(duration = runif(100, 0, 100)) # generate a random duration variable
使用
“%a”
时,绘图如下所示:


可以尝试以下操作:
scale\u x\u datetime(date\u labels=“%w”)
使用该命令,x轴的“跨度”仍然是我的整个数据范围(几个月)。它唯一改变的是标签。真的很酷,谢谢。我暗自希望一个预先打包的解决方案会存在,但也许它就是不存在。
library(ggplot2)
ggplot(tmp) + aes(x = st_time_all_in_oneweek, y = duration) +
    geom_point() + scale_x_datetime(date_labels = "%a %H:%M:%S", date_breaks = "1 day")