如何在Rstudio中为每日时间序列创建箱形图?

时间:2019-05-09 14:05:34

标签: r ggplot2 time-series boxplot

我的每日地表径流量(mm)从1997年1月1日到2005年12月31日(每日时间步长)。我想使用箱线图来显示每年每个月的地表径流量,并根据月份对它们进行排序。例如,对于一月份,我将有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 :(得分:0)

有多种方法来处理日期和图的布局(闪避vs scale_x vs构面),但这是一种方法:

生成一些示例数据:

> 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