我的每日地表径流量(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())
答案 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)