Наложение временных рядов разных лет на один и тот же сайт - PullRequest
0 голосов
/ 04 декабря 2018

Я хочу сравнить уровни воды на одном и том же участке за 3 года.Поэтому я хочу построить эти 3 года на одном графике.Данные собираются два раза в день в течение весны, а даты и время для точек данных сохраняются в формате даты POSIXct с использованием lubridate.

Например:

library(lubridate)
yr <- c(rep("2012", 128), rep("2013", 136), rep("2014", 112))
mt <- c(c(rep("5", 62), rep("6", 60), rep("7", 6)),
        c(rep("5", 58), rep("6", 60), rep("7", 18)),
        c(rep("5", 50), rep("6", 60), rep("7", 2)))
dy <- c(c(rep(1:31, each = 2), rep(1:30, each = 2), rep(1:3, each = 2)),
        c(rep(3:31, each = 2), rep(1:30, each = 2), rep(1:9, each = 2)),
        c(rep(7:31, each = 2), rep(1:30, each = 2), rep(1, each = 2)))
hr <- c(rep(c("2:00", "14:00"), 64),
        rep(c("2:00", "14:00"), 68),
        rep(c("2:00", "14:00"), 56))
water.levels <- data.frame("Date" = ymd_hm(paste(yr, mt, dy, hr, sep = " ")),
                       "Levels" = runif(376, min = 0.8, max = 1.5))

Когда я строю графикЯ получаю три года на одном и том же графике, но в виде одного непрерывного временного ряда:

plot(water.levels, type = "l")

Вместо этого я хотел бы, чтобы они были наложены, поскольку все данные собираются в сопоставимые периоды года.Пока что я не нашел решения для этого.

Спасибо!

1 Ответ

0 голосов
/ 04 декабря 2018

Благодаря Джону Спрингу, здесь было достаточно простое решение:

water.levels <- data.frame("Date" = ymd_hm(paste(1970, mt, dy, hr, sep = " ")),
                           "Year" = yr,
                           "Levels" = runif(376, min = 0.8, max = 1.5))
library(ggplot2)
ggplot(water.levels, aes(Date, Levels, 
                         group = factor(Year), 
                         colour = factor(Year))) +
geom_line()
...