首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ggplot中显示x轴上的工作日和时间

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

Stack Overflow用户
提问于 2018-01-31 22:59:58
回答 1查看 1.5K关注 0票数 1

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

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

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-31 23:41:45

这就是你所需要的。它所做的是通过将每个观察结果放在一周内来创建一个新变量,然后以必要的格式生成散点图。

代码语言:javascript
运行
复制
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"

代码语言:javascript
运行
复制
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"时,图如下所示:

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48545179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档