Как прикрепить даты к временному ряду в R - PullRequest
0 голосов
/ 13 января 2020

Я хотел бы создать временной ряд уровней растворенного кислорода во времени на трех разных глубинах. В настоящее время у меня есть даты в качестве столбца в Excel. Когда я запускаю набор данных через autoplot (), я получаю четыре графика, состоящих из времени, вершины, середины и дна. Я хотел бы иметь верхний, средний и нижний графики со временем на оси х.

TomDO<- ts(Tom_Frost_Dissolved_Oxygen)
autoplot(TomDO, ts.geom = 'ribbon', fill = 'blue')

Данные: Tom_Frost_Dissolved_Oxygen

Top     Middle  Bottom   Date
12.55   13.39   9.55    3/9/15
6.8     6.55    0.36    3/31/15
7.22    6.64    6.01    4/13/15
5.94    5.78    5.58    4/29/15
7.01    6.41    6.29    5/11/15
6.76    5.96    4.07    5/26/15
3.22    2.68    1.8     6/8/15
6.08    5.88    3.44    6/23/15
5.02    4.34    4.25    7/20/15
3.07    2.6     2.3     8/3/15
3.9     3.62    3.23    8/17/15
8.97    8.53    6.54    8/31/15
6.96    5.94    5.06    9/14/15
3.87    3.78    2.81    9/28/15
4.1     3.99    3.9     10/12/15
5.04    4.91    4.77    10/26/15
8.77    8.61    8.6     3/8/16
9.12    9.22    9.09    3/22/16
8.78    8.87    8.6     4/4/16
7.78    7.67    6.9     5/2/16
5.83    5.3     4.78    5/31/16
4.56    4.52    4.46    6/14/16
6.6     6.02    0.28    6/27/16
10.82   10.02   4.31    7/11/16
6.79    5.05    3.61    7/25/16
6.45    4.78    3.83    8/8/16
3.27    2.6     2.57    8/22/16
5.3     5.16    5.15    9/6/16
5.66    4.74    4.23    9/19/16
4.79    4.65    4.47    10/3/16
7.27    7.23    6.75    10/17/16
6.15    6.05    5.89    10/31/16
6.96    6.73    6.42    11/14/16
10.19   10.16   9.93    3/9/17
7.66    7.48    7.16    3/20/17
6.67    6.46    6.46    4/3/17
7.04    6.82    5.88    4/17/17
7.94    7.83    7.85    5/1/17
5.56    5.43    2.12    5/15/17
4.15    3.99    3.67    5/30/17
6.41    6.06    4.3     6/12/17
8.83    8.07    6.74    6/26/17
8.57    7.68    7.37    7/10/17
11.62   9.2     5.27    7/24/17
13.58   11.69   9.15    8/21/17
9.6     9.54    9.12    9/5/17
8.71    7.46    6.6     9/18/17
6.13    5.75    4.97    10/5/17
6.36    5.93    5.37    10/16/17
6.88    6.89    6.74    11/13/17
11.61   10.82   10.09   3/7/18
6.47    6.62    6.17    4/2/18
7.14    7.1     7.04    4/16/18
8.33    8.12    6.36    4/30/18
5.79    5.25    4.3     5/29/18
13.28   11.39   7.01    6/14/18
7.82    7.34    5.92    6/25/18
11.12   9.08    8.21    7/9/18
7.68    3.8     2.68    7/23/18
6.55    5.24    4.04    8/6/18
2.53    2.18    2.08    8/20/18
11.63   11.38   9.76    9/4/18
6.02    5.83    5.17    9/17/18
9.66    9.28    8.73    10/1/18
8.01    7.95    7.91    10/29/18
9.31    8.88    1.43    5/13/19
6.66    6.02    5.8     5/29/19
5.31    4.82    3.9     6/10/19
1.9     1.13    0.16    7/8/19
2.05    1.4     0.28    7/11/19
6.72    5.49    2.57    7/22/19
13.65   4.29    3.81    8/5/19
0.69    0          0    8/19/19
12.8    7.5     2.33    8/22/19
3.83    3.45    3.08    9/4/19
7.57    5.36    3.77    9/16/19
9.33    9.02    8.41    9/30/19
11.63   11.58   11.45   10/14/19
9.82    9.65    8.89    11/14/19

1 Ответ

0 голосов
/ 13 января 2020

Используя коллекцию пакетов tidyverse, вы можете получить ожидаемый график: 1) установить дату в качестве формата даты, 2) затем преобразовать данные в более длинный формат, используя pivot_longer, и построить график, используя ggplot и facet_wrap:

library(tidyverse)
df$Date <- as.Date(df$Date, format = "%m/%d/%Y")

df %>% pivot_longer(., -Date, names_to = "Var",values_to = "Val") %>%
  ggplot(aes(x = Date))+
  geom_ribbon(aes(ymin = 0, ymax = Val), fill = "blue")+
  facet_wrap(Var~., ncol = 1)+
  scale_x_date(date_breaks = "3 months", date_labels = "%b %Y")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

enter image description here

Выглядит ли то, что вы ищете?

...