inst/doc/case_study.R

## ----start, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
  echo = TRUE,
  eval = TRUE,
  fig.width = 7,
  warning = FALSE,
  message = FALSE
)
library(pRecipe)
library(kableExtra)
library(cowplot)
library(data.table)
library(foreach)
library(ggplot2)
library(ggpubr)
library(grid)
library(raster)
library(scales)

## ----eval = FALSE-------------------------------------------------------------
# library(cowplot)
# library(data.table)
# library(foreach)
# library(ggpubr)
# library(ggplot2)
# library(grid)
# library(kableExtra)
# library(pRecipe)
# library(raster)
# library(scales)

## ----eval = FALSE-------------------------------------------------------------
# download_data()
# prec_obs <- fread("chmi.csv")
# prec_obs$dataset <- "chmi"
# GAUGE_BASED <- c("cpc-global", "cru-ts-v4-08", "em-earth", "ghcn-v2",
#                  "gpcc-v2022", "precl")
# SATELLITE_BASED <- c("chirps-v2", "cmap", "cmorph-cdr", "gpcp-v3-2",
#                      "gpm-imerg-v7", "gsmap-v8", "mswep-v2-8", "persiann-cdr")
# REANALYSES <- c("20cr-v3", "era20c", "era5", "era5-land", "jra55", "merra-2",
#                 "ncep-doe", "ncep-ncar")
# FORCINGS <- c("fldas", "gldas-clsm-v2-0", "gldas-noah-v2-0", "gldas-vic-v2-0",
#               "terraclimate")

## ----eval = FALSE-------------------------------------------------------------
# prec_names <- list.files(full.names = TRUE)
# prec_data <- foreach (dataset_count = 1:length(prec_names)) %do% {
#   dummie_data <- subset_data(prec_names[dataset_count], box = c(11, 19, 46, 54),
#                              yrs = c(1981, 2020)) %>%
#     crop_data("gadm41_CZE_0.shp")
#   dummie_name <- sub(".*/([^_/]*)_.*", "\\1", prec_names[dataset_count])
#   dummie_data@file@name <- dummie_name
#   return(dummie_data)
#   }

## ----eval = FALSE-------------------------------------------------------------
# prec_ts <- foreach (idx = 1:length(prec_data), .combine = rbind) %do% {
#   dummie_data <- prec_data[[idx]]
#   dummie_name <- dummie_data@file@name
#   dummie_data <- fldmean(dummie_data)
#   dummie_data$dataset <- dummie_name
#   return(dummie_data)
# }
# prec_ts[dataset %in% GAUGE_BASED, source := "Gauge-based"
#         ][dataset %in% FORCINGS, source := "Model forcing"
#           ][dataset %in% REANALYSES, source := "Reanalysis"
#             ][dataset %in% SATELLITE_BASED, source := "Satellite-based"]

## ----eval = FALSE-------------------------------------------------------------
# prec_ts[, asum := sum(value, na.rm = TRUE), by = .(year(date), dataset)
#         ][, amean := mean(value, na.rm = TRUE), by = .(year(date), dataset)
#           ][, amax := max(value, na.rm = TRUE), by = .(year(date), dataset)
#             ][, amin := min(value, na.rm = TRUE), by = .(year(date), dataset)
#               ][, amed := median(value, na.rm = TRUE), by = .(year(date), dataset)]
# prec_ts$dataset <- as.factor(prec_ts$dataset)

## ----eval = FALSE-------------------------------------------------------------
# prec_color <- setNames(hue_pal()(length(unique(prec_ts$dataset))),
#                        levels(prec_ts$dataset))
# p01 <- ggplot(prec_ts, aes(x = date)) +
#   geom_line(aes(y = value, color = dataset)) +
#   scale_color_manual(values = prec_color, guide = 'none') +
#   labs(y = NULL, title = 'Monthly') + theme_bw()
# p02 <- ggplot(prec_ts, aes(x = date)) +
#   geom_line(aes(y = asum, color = dataset)) +
#   scale_color_manual(values = prec_color, guide = 'none') +
#   labs(y = NULL, title = 'Annual Total') + theme_bw()
# p03 <- ggplot(prec_ts, aes(x = date)) +
#   geom_line(aes(y = amin, color = dataset)) +
#   scale_color_manual(values = prec_color, guide = 'none') +
#   labs(y = NULL, title = 'Annual Min') + theme_bw()
# p04 <- ggplot(prec_ts, aes(x = date)) +
#   geom_line(aes(y = amax, color = dataset)) +
#   scale_color_manual(values = prec_color, guide = 'none') +
#   labs(y = NULL, title = 'Annual Max') + theme_bw()
# p05 <- ggplot(prec_ts, aes(x = date)) +
#   geom_line(aes(y = amed, color = dataset)) +
#   scale_color_manual(values = prec_color, guide = 'none') +
#   labs(y = NULL, title = 'Annual Median') + theme_bw()
# p06 <- ggplot(prec_ts, aes(x = date)) +
#   geom_line(aes(y = amean, color = dataset)) +
#   scale_color_manual(values = prec_color, guide = 'none') +
#   labs(y = NULL, title = 'Annual Average') + theme_bw()
# 
# # Aux legends
# gauge_legend <- ggplot(prec_ts[type == 'Gauge-based']) +
#   geom_line(aes(x = date, y = value, color = dataset)) +
#   scale_color_manual(values = prec_color, name = 'Gauge-based') +
#   theme_bw() +
#   theme(legend.text = element_text(size = 20),
#         legend.title = element_text(size = 24))
# model_legend <- ggplot(prec_ts[type == 'Model forcing']) +
#   geom_line(aes(x = date, y = value, color = dataset)) +
#   scale_color_manual(values = prec_color, name = 'Model forcing') +
#   theme_bw() +
#   theme(legend.text = element_text(size = 20),
#         legend.title = element_text(size = 24))
# reanalysis_legend <- ggplot(prec_ts[type == 'Reanalysis']) +
#   geom_line(aes(x = date, y = value, color = dataset)) +
#   scale_color_manual(values = prec_color, name = 'Reanalysis') +
#   theme_bw() +
#   theme(legend.text = element_text(size = 20),
#         legend.title = element_text(size = 24))
# satellite_legend <- ggplot(prec_ts[type == 'Satellite-based']) +
#   geom_line(aes(x = date, y = value, color = dataset)) +
#   scale_color_manual(values = prec_color, name = 'Satellite-based') +
#   theme_bw() +
#   theme(legend.text = element_text(size = 20),
#         legend.title = element_text(size = 24))
# 
# plot_grid(plot_grid(p01, p02, p03, p04, p05, p06, nrow = 3, ncol = 2),
#           plot_grid(get_legend(gauge_legend), get_legend(model_legend),
#                     get_legend(reanalysis_legend),
#                     get_legend(satellite_legend), ncol = 1),
#           ncol = 2, rel_widths = c(5, 0.75)) %>%
#   annotate_figure(left = textGrob("Precipitation in [mm]", rot = 90,
#                                   vjust = 1, gp = gpar(fontsize = 24)))

## ----eval=FALSE---------------------------------------------------------------
# plot_taylor(prec_ts, prec_obs, cols = prec_color)

## ----eval=FALSE---------------------------------------------------------------
# prec_8 <- prec_ts[dataset %in% c('gpcc-v2022', 'cpc-global', 'era5-land',
#                               'merra-2', 'gldas-noah-v2-0', 'gldas-clsm-v2-0',
#                               'gpcp-v3-2', 'mswep-v2-8')]
# prec8_colors <- setNames(c("#999999", "#E69F00", "#56B4E9", "#009E73",
#                            "#F0E442", "#0072B2", "#D55E00", "#CC79A7"),
#                          unique(prec_8$name))
# plot_taylor(prec_8, prec_obs, groups = 'seasons', cols = prec8_colors)

## ----eval=FALSE---------------------------------------------------------------
# prec_4 <- prec_ts[dataset %in% c('gpcc-v2022', 'merra-2', 'mswep-v2-8',
#                                  'gldas-noah-v2-0')] %>%
#   .[year(date) <= 2000, period := "1981 - 2000"] %>%
#   .[year(date) > 2000, period := "2001 - 2020"]
# 
# plot_density(prec_4) +
#   facet_grid(dataset + source ~ period) +
#   theme(axis.text = element_text(size = 16),
#         axis.title = element_text(size = 24),
#         strip.text = element_text(size = 24),
#         strip.background = element_rect(fill = "white",
#                                         color = "black", linewidth = 1))

## ----eval=FALSE---------------------------------------------------------------
# prec_grid <- lapply(prec_data, function(x) x@file@name %in% c('gpcc-v2022',
#                                                               'merra-2',
#                                                               'mswep-v2-8',
#                                                               'gldas-noah-v2-0'))
# prec_grid <- prec_data[which(prec_grid == TRUE)]
# prec_grid <- foreach (dataset_count = 1:4, .combine = rbind) %do% {
#   dummie <- prec_grid[[dataset_count]]
#   dummie_name <- dummie@file@name
#   dummie <- tabular(dummie) %>%
#     .[year(date) <= 2000, period := "1981 - 2000\nMedian"] %>%
#     .[year(date) > 2000, period := "2001 - 2020\nMedian"]
#   dummie <- dummie[, .(value = median(value, na.rm = TRUE)),
#                    by = .(lon, lat, period)]
#   dummie$dataset <- dummie_name
#   dummie
# }
# 
# prec_grid[dataset %in% GAUGE_BASED, source := "Gauge-based"
#           ][dataset %in% FORCINGS, source := "Model forcing"
#             ][dataset %in% REANALYSES, source := "Reanalysis"
#               ][dataset %in% SATELLITE_BASED, source := "Satellite-based"]
# 
# 
# plot_map(prec_grid, timestamp = FALSE) +
#   facet_grid(dataset + source ~ period) +
#   theme(axis.text = element_text(size = 16),
#         axis.title = element_text(size = 24),
#         strip.text = element_text(size = 24),
#         strip.background = element_rect(fill = "white",
#                                         color = "black", linewidth = 2))

Try the pRecipe package in your browser

Any scripts or data that you put into this service are public.

pRecipe documentation built on April 4, 2025, 2:13 a.m.