r - R,将日期设置为通用日期和星期几
问题描述
美好的一天,我有一个数据集,其中包含过去一个月每周每一天的每个小时的值,我想将本周的值与前一周的值进行比较,并将它们放在图上。我使用以下代码创建日期格式;
WeekDate <- seq(from=as.POSIXct("2018-09-19 0:00", tz="UTC"),
to=as.POSIXct("2018-09-25 23:00", tz="UTC"), by="hour")
和
PreviousWeekDate <- seq(from=as.POSIXct("2018-09-12 0:00", tz="UTC"),
to=as.POSIXct("2018-09-18 23:00", tz="UTC"), by="hour")
我将它与我的值合并(我们可以使用 y1 = (0:167) 和 y2 = (1:168) 作为虚拟值)。
我用情节来获取图表
plot_ly() %>%
add_lines(x = WeekDate, y = y1, name = "2018-09-19 to 2018-09-25") %>%
add_lines(x = PreviousWeekDate, y = y2, name = "2018-09-12 to 2018-09-19")
我想要做的是得到一个像下面这样的情节;周图
而不是我得到的那个;非重叠图
在 X 轴上,我想说的是;星期一 HH:MM,所以我可以直接将一个值与另一个值进行比较,从而指示我们正在查看的时间。我希望它们重叠。类似于将日期转换为通用周,没有实际的月/日。
我还没有找到任何东西,任何帮助将不胜感激。谢谢
解决方案
这可以通过从工具提示中隐藏“time_norm”数据来稍微清理一下,但我认为它基本上可以满足您的需求。
library(tidyverse); library(lubridate); library(plotly)
df <- data_frame(
time = seq(from=as.POSIXct("2018-09-12 0:00", tz="UTC"),
to=as.POSIXct("2018-09-25 23:00", tz="UTC"), by="hour")) %>%
rowid_to_column(var = "y") %>%
mutate(week = if_else(time > max(time) - ddays(7), "This week", "Last week"),
time_norm = if_else(time > max(time) - ddays(7), time, time + ddays(7)))
ggplotly(
{
ggplot(df, aes(time_norm, y, color = week, label = norm)) +
geom_line()
}
推荐阅读
- asp.net-mvc - Asp.net MVC Azure 云角色 - 预编译
- c# - 如何从数据库中获取文件上传文本框中的值
- javascript - Javascript 对象文字模式,单击功能不起作用
- c++ - 在 OpenCV 中插入图像外的像素矩形
- wpf - 附加属性的 WPF“不是属性的有效值”错误,即使它按预期工作
- java - Android 上的 AnyChart:格式化 x 轴值
- cypress - 从 XHR 主体复制元素
- python - 交叉递归图计算迭代的问题
- c - 使用UDP向服务器发送结构,为什么服务器得到错误的数字?
- python - ElasticSearch 字段提升