Как создать коробочные графики для ежедневных временных рядов в Rstudio? - PullRequest
0 голосов
/ 09 мая 2019

У меня дневной поверхностный сток (мм), который начинается с 01.01.1997 по 31.12.2005 (ежедневный шаг по времени). Я хочу использовать boxplot, чтобы показать поверхностный сток для каждого месяца для каждого года, и упорядочить их по месяцам. Например, для января у меня будет 9 коробочных графиков для января: 1997, 1998, ..., 2005. Затем февраль и так далее ...

Вот код, который я использовал, но он только что создал 12 коробочных графиков.

library(ggplot2)
monthorder <- c('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 
                'Sep', 'Oct', 'Nov', 'Dec')
my_data$Month <- factor(format(my_data$Date, "%b"), levels = monthorder)
ggplot(my_data, aes(Month, SURQ))+ geom_boxplot()+geom_errorbar())

1 Ответ

0 голосов
/ 19 мая 2019

Существуют различные способы обработки дат и макета графика (dodge vs scale_x vs facet), но вот один из способов сделать это:

Сгенерировать пример данных:

> tb = tibble(Day = seq(mdy('1/1/1997'), mdy('12/31/1999'), by = '1 week')) %>%
  mutate(SURQ = sample(0:10, n(), replace=TRUE)) %>%
  group_by(Month = month(Day, label = TRUE), Year = as.integer(year(Day)))
> tb
# A tibble: 157 x 4
# Groups:   Month, Year [36]
   Day         SURQ Month  Year
   <date>     <int> <ord> <int>
 1 1997-01-01     2 Jan    1997
 2 1997-01-08     2 Jan    1997
 3 1997-01-15     6 Jan    1997
 4 1997-01-22     0 Jan    1997
 5 1997-01-29     2 Jan    1997
 6 1997-02-05     3 Feb    1997
 7 1997-02-12     1 Feb    1997
 8 1997-02-19     1 Feb    1997
 9 1997-02-26     6 Feb    1997
10 1997-03-05     5 Mar    1997
# … with 147 more rows

Теперь сюжет:

tb %>% ggplot(aes(factor(Year), SURQ)) +
  geom_boxplot() +
  facet_wrap(vars(Month), nrow = 1)

enter image description here

...