как построить несколько дневных временных рядов на одном - PullRequest
0 голосов
/ 29 марта 2019

У меня есть данные временных рядов за 27 дней (с 2018-04-09 по 2018-5-15 без выходных) с 7 наблюдениями в день (с 08:00 до 20:00 каждые два часа) с двумя переменными на наблюдение (ди и ес).Я хочу построить все дни в виде линейных графиков на одном графике.

Я нашел решения для построения одного графика в день с помощью фасетного графика ggplot, и я нашел решения для построения целых временных рядов на одном графике (di и eu fromС 2018-04-09 по 2018-05-15).Но ничего такого, что позволило бы мне наложить 27 ежедневных графиков для одной переменной на одном графике с 8:00 до 20:00.

Первые три дня в качестве примера данных с помощью 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 голосов
/ 29 марта 2019

Вы можете определить day и hour заранее, а затем построить график с соответствующими группами, например так:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...