R,将日期设置为通用日期和星期几

时间:2018-09-25 23:07:08

标签: r date ggplot2 plotly r-plotly

早上好,我有一个数据集,其中包含过去一个月中一周中每一天每一小时的值,我想将本周的值与前一周的值进行比较,并将其放在图表上。 我使用以下代码创建日期格式;

Failed to initialize NVML: Insufficient Permissions

WeekDate <- seq(from=as.POSIXct("2018-09-19 0:00", tz="UTC"),
to=as.POSIXct("2018-09-25 23:00", tz="UTC"), by="hour")

我将其与值合并(我们可以使用y1 =(0:167)和y2 =(1:168)作为虚拟值)。

我曾经阴谋获取图表

PreviousWeekDate <- seq(from=as.POSIXct("2018-09-12 0:00", tz="UTC"),
to=as.POSIXct("2018-09-18 23:00", tz="UTC"), by="hour")

我想做的是得到如下图所示的图; Week plot

而不是我得到的那个; Non Overlapped Graph

我想在X轴上说;星期一HH:MM,因此我可以直接将一个值与另一个值进行比较,从而表明我们在看哪个时间。我希望它们重叠。就像将日期转换为通用的Week,而没有实际的月/日。

我还没有找到任何东西,将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:0)

可以通过隐藏工具提示中的“ 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()
  }