我有一个包含事件的数据集。这些事件具有开始时间和持续时间。我想创建一个散点图,其中x轴为开始时间,y轴为持续时间,但我想改变x轴,以便显示一周的过程。也就是说,我希望x轴在星期一00:00开始,并在星期日23:59运行。
我在网上找到的所有解决方案都告诉我如何在工作日逐个进行分组,这不是我想要做的。我想单独绘制所有数据点,我只想将日期轴减少到工作日和时间。
有什么建议吗?
答案 0 :(得分:2)
这可以满足您的需求。它的作用是通过在一周内放置每个观察值来创建一个新变量,然后以必要的格式生成散点图。
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 %H:%M:%S"
可能只是"%a"
,因为时间部分不提供信息。
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")
使用"%a"
时,情节如下: