如何在一幅图中绘制多个每日时间序列

时间:2019-03-29 16:59:18

标签: r plot

我有27天(从2018-04-09到2018-5-15,没有周末)的时间序列数据,每天有7个观测值(每2小时08:00 t0 20:00),每个观测值有两个变量( di和eu)。 我想将一整天都绘制成线图。

我找到了使用ggplot刻面图每天绘制一个图的解决方案,并且找到了一个图中绘制整个时间序列的解决方案(从2018-04-09到2018-05-15的di和eu)。 但是,没有什么可以让我在8:00到20:00的一个地块上覆盖一个变量的27个每日地块。

前三天作为带有dput()的示例数据:

structure(list(date_time = structure(c(1523260800, 1523268000, 
1523275200, 1523282400, 1523289600, 1523296800, 1523304000, 1523347200, 
1523354400, 1523361600, 1523368800, 1523376000, 1523383200, 1523390400, 
1523433600, 1523440800, 1523448000, 1523455200, 1523462400, 1523469600, 
1523476800), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
di = c(75, 90, 35, 70, 75, 15, 5, 65, 55, 15, 15, 0, NA, 
15, 55, 55, 5, 25, NA, 60, NA), eu = c(15, 0, 65, 30, 15, 
65, 70, 40, 45, 75, 75, 100, NA, 85, 45, 30, 90, 65, NA, 
20, NA)), row.names = c(NA, -21L), class = c("tbl_df", "tbl", 
"data.frame"))

一个地块上全部27天的地块可能看起来令人困惑,但是我想尝试一下,看看它是否使数据趋势明显。每个工作日都有一块图是不错的补充。

1 个答案:

答案 0 :(得分:0)

您可以先确定dayhour,然后按如下所示分别绘制各个组:

library(tidyverse)
library(lubridate)

df %>%
  gather(metric, value, -date_time) %>%
  mutate(
    hour_of_day = hour(date_time),
    day = day(date_time)
  ) %>%
  ggplot(aes(x = hour_of_day, y = value)) +
  geom_line(aes(group = day)) +
  facet_wrap( ~ metric)

Plot