我有几年的每日降雨数据,例如:
date value
01/01/1990 1.02
02/01/1990 0.50
03/01/1990 0.00
......... ...
......... ...
12/12/2015 10.25
我需要从中连续制作每五年的直方图。即1990年至1995年的直方图,然后是1991年至1996年的等等。我尝试使用ggplot和facet找不到方法。
rf_facet <- inp %>%
filter(between(rain,1,100))
ggplot(rf_facet, aes(x = rain)) + facet_wrap(~year, nrow = 5) +
geom_histogram(aes(fill =..count..))
这只能产生一年的地块,我希望每五年一次。
任何帮助将不胜感激。 数据示例为here
答案 0 :(得分:4)
这是一个使用ggplot2
和cowplot
的示例。我有一个从i
年到i+5
年的函数。我使用lapply
在所有可能的连续5年期间运行此程序。
# Dummy data
df <- data.frame(date = seq(as.Date('01/01/1990', format = "%d/%m/%Y"),
as.Date('31/12/2000', , format = "%d/%m/%Y"), by="day"))
df$value <- runif(nrow(df), 0, 100)
# Load libraries
library(dplyr)
library(cowplot)
library(ggplot2)
library(lubridate)
# Plotting function
plot_rain <- function(i){
g <- ggplot(df %>% filter(between(year(date), i, i+5)))
g <- g + geom_histogram(aes(value))
g <- g + xlab("Rainfall (mm)") + ylab("# of obs")
g <- g + ggtitle(paste(i, i+5, sep = "-"))
}
# Run for all years
plist <- lapply(min(year(df$date)):(max(year(df$date))-5), plot_rain)
# USe cowplot to plot the list of figure
plot_grid(plotlist = plist, ncol = 2)
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
由reprex package(v0.2.1)于2019-03-07创建