我有一个包含事件的数据集。这些事件有开始时间和持续时间。我想创建一个散点图,x轴上的开始时间和y轴上的持续时间,但我想改变x轴,使其显示一周的进程。也就是说,我希望x轴从周一00:00开始,一直持续到周日23:59。
我在网上找到的所有解决方案都告诉我如何在工作日执行分组求和,这不是我想要做的。我想要单独绘制所有数据点,我只想将日期轴减少到工作日和时间。
有什么建议吗?
发布于 2018-01-31 23:41:45
这就是你所需要的。它所做的是通过将每个观察结果放在一周内来创建一个新变量,然后以必要的格式生成散点图。
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"时,图如下所示:

https://stackoverflow.com/questions/48545179
复制相似问题