Last updated: 2024-09-26
Checks: 7 0
Knit directory:
heatwave_co2_flux_2023/analysis/
This reproducible R Markdown analysis was created with workflowr (version 1.7.0). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.
Great! Since the R Markdown file has been committed to the Git repository, you know the exact version of the code that produced these results.
Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.
The command set.seed(20240307)
was run prior to running
the code in the R Markdown file. Setting a seed ensures that any results
that rely on randomness, e.g. subsampling or permutations, are
reproducible.
Great job! Recording the operating system, R version, and package versions is critical for reproducibility.
Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.
Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.
Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.
The results in this page were generated with repository version 825ac32. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.
Note that you need to be careful to ensure that all relevant files for
the analysis have been committed to Git prior to generating the results
(you can use wflow_publish
or
wflow_git_commit
). workflowr only checks the R Markdown
file, but you know if there are other scripts or data files that it
depends on. Below is the status of the Git repository when the results
were generated:
Ignored files:
Ignored: .Rhistory
Ignored: .Rproj.user/
Ignored: data
Ignored: output/
Unstaged changes:
Modified: analysis/child/pCO2_product_analysis.Rmd
Modified: analysis/child/pCO2_product_synopsis.Rmd
Modified: code/Workflowr_project_managment.R
Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.
These are the previous versions of the repository in which changes were
made to the R Markdown (analysis/SOM_FFN.Rmd
) and HTML
(docs/SOM_FFN.html
) files. If you’ve configured a remote
Git repository (see ?wflow_git_remote
), click on the
hyperlinks in the table below to view the files as they were in that
past version.
File | Version | Author | Date | Message |
---|---|---|---|---|
html | 825ac32 | jens-daniel-mueller | 2024-09-26 | Build site. |
html | e827817 | jens-daniel-mueller | 2024-09-09 | Build site. |
html | f220529 | jens-daniel-mueller | 2024-08-22 | Build site. |
html | 4f019e4 | jens-daniel-mueller | 2024-07-11 | Build site. |
html | 334ff26 | jens-daniel-mueller | 2024-07-10 | manual commit |
Rmd | 71d9d10 | jens-daniel-mueller | 2024-07-10 | manual commit |
html | 430e926 | jens-daniel-mueller | 2024-07-10 | manual commit |
html | c858f57 | jens-daniel-mueller | 2024-07-01 | Build site. |
html | f1954bc | jens-daniel-mueller | 2024-06-27 | Build site. |
html | 8b8904a | jens-daniel-mueller | 2024-06-26 | Build site. |
html | 5634f7f | jens-daniel-mueller | 2024-06-26 | Build site. |
Rmd | 1acd7b1 | jens-daniel-mueller | 2024-06-26 | cleaned |
html | bd4df91 | jens-daniel-mueller | 2024-06-13 | Build site. |
html | 6433789 | jens-daniel-mueller | 2024-06-13 | Build site. |
html | 3148fef | jens-daniel-mueller | 2024-06-13 | Build site. |
html | c0642e2 | jens-daniel-mueller | 2024-06-12 | Build site. |
html | a60be97 | jens-daniel-mueller | 2024-06-12 | Build site. |
html | 67f79ca | jens-daniel-mueller | 2024-06-12 | Build site. |
html | 4de1802 | jens-daniel-mueller | 2024-06-12 | Build site. |
Rmd | 49b7828 | jens-daniel-mueller | 2024-06-12 | removed unnecessary analysis |
html | bc2711d | jens-daniel-mueller | 2024-06-12 | Build site. |
html | d46002d | jens-daniel-mueller | 2024-06-12 | manual commit |
html | f4a8ec9 | jens-daniel-mueller | 2024-06-12 | Build site. |
html | b154a83 | jens-daniel-mueller | 2024-06-12 | Build site. |
html | e3748fc | jens-daniel-mueller | 2024-06-11 | Build site. |
html | 5261667 | jens-daniel-mueller | 2024-06-11 | manual commit |
html | f8eeceb | jens-daniel-mueller | 2024-06-11 | manual commit |
html | 54a9740 | jens-daniel-mueller | 2024-06-11 | Build site. |
html | 3a18397 | jens-daniel-mueller | 2024-06-11 | Build site. |
html | 2b34bf8 | jens-daniel-mueller | 2024-06-11 | manual commit |
html | 5e77ff9 | jens-daniel-mueller | 2024-06-11 | Build site. |
html | f02da4d | jens-daniel-mueller | 2024-06-11 | Build site. |
html | 97c6e98 | jens-daniel-mueller | 2024-06-11 | Build site. |
html | 26805fd | jens-daniel-mueller | 2024-06-11 | Build site. |
html | da0b483 | jens-daniel-mueller | 2024-06-11 | Build site. |
html | 6954c65 | jens-daniel-mueller | 2024-06-06 | Build site. |
html | e1e0ccb | jens-daniel-mueller | 2024-05-27 | Build site. |
html | a3743ec | jens-daniel-mueller | 2024-05-25 | Build site. |
html | a8fa6b2 | jens-daniel-mueller | 2024-05-24 | Build site. |
html | c46133d | jens-daniel-mueller | 2024-05-23 | Build site. |
Rmd | 305b932 | jens-daniel-mueller | 2024-05-23 | testrun with read 3D ocean interior fields |
html | be285dc | jens-daniel-mueller | 2024-05-21 | Build site. |
html | 51df30d | jens-daniel-mueller | 2024-05-15 | Build site. |
html | 909f6c8 | jens-daniel-mueller | 2024-05-14 | Build site. |
Rmd | 7239946 | jens-daniel-mueller | 2024-05-14 | updated seasonality plots |
html | 009791f | jens-daniel-mueller | 2024-05-14 | Build site. |
html | 3b5d16b | jens-daniel-mueller | 2024-05-13 | Build site. |
Rmd | 1e1dee5 | jens-daniel-mueller | 2024-05-13 | pco2 to fco2 conversions, changed output files |
html | 8c96de4 | jens-daniel-mueller | 2024-05-08 | Build site. |
html | 79ef4f3 | jens-daniel-mueller | 2024-05-08 | Build site. |
html | b0129aa | jens-daniel-mueller | 2024-04-23 | Build site. |
Rmd | 39cbcef | jens-daniel-mueller | 2024-04-23 | final atm CO2 MBL used |
html | 7f9c687 | jens-daniel-mueller | 2024-04-23 | Build site. |
html | ce4e2a6 | jens-daniel-mueller | 2024-04-17 | Build site. |
html | 741ee62 | jens-daniel-mueller | 2024-04-17 | Build site. |
html | 58e3680 | jens-daniel-mueller | 2024-04-11 | Build site. |
html | dfcf790 | jens-daniel-mueller | 2024-04-11 | Build site. |
html | 139bc97 | jens-daniel-mueller | 2024-04-11 | manual deletion of files |
html | 2321242 | jens-daniel-mueller | 2024-04-11 | Build site. |
Rmd | d98842b | jens-daniel-mueller | 2024-04-10 | fixed anomaly year output |
html | 2793f67 | jens-daniel-mueller | 2024-04-05 | Build site. |
html | 69dc18c | jens-daniel-mueller | 2024-04-04 | Build site. |
html | c9d994c | jens-daniel-mueller | 2024-04-04 | Build site. |
Rmd | 46f044d | jens-daniel-mueller | 2024-04-04 | rebuild entire website with individual anomaly years |
Rmd | 9d258b5 | jens-daniel-mueller | 2024-04-03 | manual commit |
html | 3a9a60f | jens-daniel-mueller | 2024-03-29 | Build site. |
html | 3946ecd | jens-daniel-mueller | 2024-03-27 | Build site. |
html | 6343e59 | jens-daniel-mueller | 2024-03-27 | Build site. |
Rmd | aba8ff0 | jens-daniel-mueller | 2024-03-27 | input variables modified |
html | 1546f6d | jens-daniel-mueller | 2024-03-27 | Build site. |
Rmd | 04839cc | jens-daniel-mueller | 2024-03-27 | input variables added |
html | 6bb7ce2 | jens-daniel-mueller | 2024-03-25 | Build site. |
html | f9d2b99 | jens-daniel-mueller | 2024-03-25 | total cummulative intensity added |
html | 3114859 | jens-daniel-mueller | 2024-03-25 | Build site. |
html | 4589270 | jens-daniel-mueller | 2024-03-24 | Build site. |
html | 62ea4dd | jens-daniel-mueller | 2024-03-24 | Build site. |
html | 1a5167d | jens-daniel-mueller | 2024-03-24 | Build site. |
html | 934da22 | jens-daniel-mueller | 2024-03-22 | Build site. |
html | ae4041c | jens-daniel-mueller | 2024-03-22 | Build site. |
html | dc2068e | jens-daniel-mueller | 2024-03-22 | Build site. |
html | 98cf341 | jens-daniel-mueller | 2024-03-21 | Build site. |
html | e3e1491 | jens-daniel-mueller | 2024-03-21 | Build site. |
html | 47238da | jens-daniel-mueller | 2024-03-21 | Build site. |
html | 83fcd67 | jens-daniel-mueller | 2024-03-21 | Build site. |
html | 342018b | jens-daniel-mueller | 2024-03-20 | Build site. |
html | 8698b51 | jens-daniel-mueller | 2024-03-20 | Build site. |
Rmd | 39d9769 | jens-daniel-mueller | 2024-03-20 | write summary output files |
html | 03321bd | jens-daniel-mueller | 2024-03-19 | Build site. |
Rmd | e80f0d8 | jens-daniel-mueller | 2024-03-19 | units fixed |
html | b41fa51 | jens-daniel-mueller | 2024-03-19 | Build site. |
html | bd3c1fe | jens-daniel-mueller | 2024-03-19 | Build site. |
Rmd | fbfd936 | jens-daniel-mueller | 2024-03-19 | run pco2 products with child document |
center <- -160
boundary <- center + 180
target_crs <- paste0("+proj=robin +over +lon_0=", center)
# target_crs <- paste0("+proj=eqearth +over +lon_0=", center)
# target_crs <- paste0("+proj=eqearth +lon_0=", center)
# target_crs <- paste0("+proj=igh_o +lon_0=", center)
worldmap <- ne_countries(scale = 'small',
type = 'map_units',
returnclass = 'sf')
worldmap <- worldmap %>% st_break_antimeridian(lon_0 = center)
worldmap_trans <- st_transform(worldmap, crs = target_crs)
# ggplot() +
# geom_sf(data = worldmap_trans)
coastline <- ne_coastline(scale = 'small', returnclass = "sf")
coastline <- st_break_antimeridian(coastline, lon_0 = 200)
coastline_trans <- st_transform(coastline, crs = target_crs)
# ggplot() +
# geom_sf(data = worldmap_trans, fill = "grey", col="grey") +
# geom_sf(data = coastline_trans)
bbox <- st_bbox(c(xmin = -180, xmax = 180, ymax = 65, ymin = -78), crs = st_crs(4326))
bbox <- st_as_sfc(bbox)
bbox_trans <- st_break_antimeridian(bbox, lon_0 = center)
bbox_graticules <- st_graticule(
x = bbox_trans,
crs = st_crs(bbox_trans),
datum = st_crs(bbox_trans),
lon = c(20, 20.001),
lat = c(-78,65),
ndiscr = 1e3,
margin = 0.001
)
bbox_graticules_trans <- st_transform(bbox_graticules, crs = target_crs)
rm(worldmap, coastline, bbox, bbox_trans)
# ggplot() +
# geom_sf(data = worldmap_trans, fill = "grey", col="grey") +
# geom_sf(data = coastline_trans) +
# geom_sf(data = bbox_graticules_trans)
lat_lim <- ext(bbox_graticules_trans)[c(3,4)]*1.002
lon_lim <- ext(bbox_graticules_trans)[c(1,2)]*1.005
# ggplot() +
# geom_sf(data = worldmap_trans, fill = "grey90", col = "grey90") +
# geom_sf(data = coastline_trans) +
# geom_sf(data = bbox_graticules_trans, linewidth = 1) +
# coord_sf(crs = target_crs,
# ylim = lat_lim,
# xlim = lon_lim,
# expand = FALSE) +
# theme(
# panel.border = element_blank(),
# axis.text = element_blank(),
# axis.ticks = element_blank()
# )
latitude_graticules <- st_graticule(
x = bbox_graticules,
crs = st_crs(bbox_graticules),
datum = st_crs(bbox_graticules),
lon = c(20, 20.001),
lat = c(-60,-30,0,30,60),
ndiscr = 1e3,
margin = 0.001
)
latitude_graticules_trans <- st_transform(latitude_graticules, crs = target_crs)
latitude_labels <- data.frame(lat_label = c("60°N","30°N","Eq.","30°S","60°S"),
lat = c(60,30,0,-30,-60)-4, lon = c(35)-c(0,2,4,2,0))
latitude_labels <- st_as_sf(x = latitude_labels,
coords = c("lon", "lat"),
crs = "+proj=longlat")
latitude_labels_trans <- st_transform(latitude_labels, crs = target_crs)
# ggplot() +
# geom_sf(data = worldmap_trans, fill = "grey", col = "grey") +
# geom_sf(data = coastline_trans) +
# geom_sf(data = bbox_graticules_trans) +
# geom_sf(data = latitude_graticules_trans,
# col = "grey60",
# linewidth = 0.2) +
# geom_sf_text(data = latitude_labels_trans,
# aes(label = lat_label),
# size = 3,
# col = "grey60")
path_pCO2_products <-
"/nfs/kryo/work/datasets/gridded/ocean/2d/observation/pco2/"
library(ncdf4)
nc <-
nc_open(paste0(
path_pCO2_products,
"VLIZ-SOM_FFN/VLIZ-SOM_FFN_predict.nc"
))
print(nc)
pco2_product <-
read_ncdf(
paste0(
path_pCO2_products,
"VLIZ-SOM_FFN/VLIZ-SOM_FFN_predict.nc"
),
var = c("dco2", "atm_co2", "sol", "kw", "spco2_smoothed", "fgco2_smoothed"),
ignore_bounds = TRUE,
make_units = FALSE
)
pco2_product_input <-
read_ncdf(
paste0(
path_pCO2_products,
"VLIZ-SOM_FFN/VLIZ-SOM_FFN_inputs.nc"
),
var = c("sst", "sss", "chl", "wind"),
ignore_bounds = TRUE,
make_units = FALSE
)
pco2_product <- c(pco2_product, pco2_product_input)
rm(pco2_product_input)
pco2_product <- pco2_product %>%
as_tibble()
pco2_product <-
pco2_product %>%
rename(spco2 = spco2_smoothed,
fgco2 = fgco2_smoothed,
salinity = sss,
temperature = sst)
pco2_product <-
pco2_product %>%
mutate(across(-c(lon, lat, time), ~ replace(., . >= 1e+19, NA)))
pco2_product <-
pco2_product %>%
mutate(area = earth_surf(lat, lon),
year = year(time),
month = month(time))
pco2_product <-
pco2_product %>%
mutate(lon = if_else(lon < 20, lon + 360, lon),
wind = sqrt(wind))
pco2_product <-
pco2_product %>%
mutate(
sfco2 = p2fCO2(T = temperature,
pCO2 = spco2),
atm_fco2 = p2fCO2(T = temperature,
pCO2 = atm_co2),
dfco2 = sfco2 - atm_fco2
)
pco2_product <-
pco2_product %>%
mutate(kw_sol = kw * sol)
pco2_product <-
pco2_product %>%
select(-c(dco2, atm_co2, spco2, kw, sol))
pCO2_product_preprocessing <-
knitr::knit_expand(
file = here::here("analysis/child/pCO2_product_preprocessing.Rmd"),
product_name = "SOM-FFN"
)
# model <- TRUE
model <- str_detect('SOM-FFN', "FESOM-REcoM|ETHZ-CESM")
biome_mask <-
read_rds(here::here("data/biome_mask.rds"))
region_mask <-
read_rds(here::here("data/region_mask.rds"))
map <-
read_rds(here::here("data/map.rds"))
key_biomes <-
read_rds(here::here("data/key_biomes.rds"))
labels_breaks <- function(i_name) {
if (i_name == "dco2") {
i_legend_title <- "ΔpCO<sub>2</sub><br>(µatm)"
}
if (i_name == "dfco2") {
i_legend_title <- "ΔfCO<sub>2</sub><br>(µatm)"
}
if (i_name == "atm_co2") {
i_legend_title <- "pCO<sub>2,atm</sub><br>(µatm)"
}
if (i_name == "atm_fco2") {
i_legend_title <- "fCO<sub>2,atm</sub><br>(µatm)"
}
if (i_name == "sol") {
i_legend_title <- "K<sub>0</sub><br>(mol m<sup>-3</sup> µatm<sup>-1</sup>)"
}
if (i_name == "kw") {
i_legend_title <- "k<sub>w</sub><br>(m yr<sup>-1</sup>)"
}
if (i_name == "kw_sol") {
i_legend_title <- "k<sub>w</sub> K<sub>0</sub><br>(mol yr<sup>-1</sup> m<sup>-2</sup> µatm<sup>-1</sup>)"
}
if (i_name == "spco2") {
i_legend_title <- "pCO<sub>2,ocean</sub><br>(µatm)"
}
if (i_name == "sfco2") {
i_legend_title <- "fCO<sub>2,ocean</sub><br>(µatm)"
}
if (i_name == "intpp") {
i_legend_title <- "NPP<sub>int</sub><br>(mol m<sup>-2</sup> yr<sup>-1</sup>)"
}
if (i_name == "no3") {
i_legend_title <- "NO<sub>3</sub><br>(μmol kg<sup>-1</sup>)"
}
if (i_name == "o2") {
i_legend_title <- "O<sub>2</sub><br>(μmol kg<sup>-1</sup>)"
}
if (i_name == "dissic") {
i_legend_title <- "DIC<br>(μmol kg<sup>-1</sup>)"
}
if (i_name == "sdissic") {
i_legend_title <- "sDIC<br>(μmol kg<sup>-1</sup>)"
}
if (i_name == "cstar") {
i_legend_title <- "C*<br>(μmol kg<sup>-1</sup>)"
}
if (i_name == "talk") {
i_legend_title <- "TA<br>(μmol kg<sup>-1</sup>)"
}
if (i_name == "stalk") {
i_legend_title <- "sTA<br>(μmol kg<sup>-1</sup>)"
}
if (i_name == "sdissic_stalk") {
i_legend_title <- "sDIC-sTA<br>(μmol kg<sup>-1</sup>)"
}
if (i_name == "sfco2_total") {
i_legend_title <- "total"
}
if (i_name == "sfco2_therm") {
i_legend_title <- "thermal"
}
if (i_name == "sfco2_nontherm") {
i_legend_title <- "non-thermal"
}
if (i_name == "fgco2") {
i_legend_title <- "FCO<sub>2</sub><br>(mol m<sup>-2</sup> yr<sup>-1</sup>)"
}
if (i_name == "fgco2_hov") {
i_legend_title <- "FCO<sub>2</sub><br>(PgC deg<sup>-1</sup> yr<sup>-1</sup>)"
}
if (i_name == "fgco2_int") {
i_legend_title <- "FCO<sub>2</sub><br>(PgC yr<sup>-1</sup>)"
}
if (i_name == "thetao") {
i_legend_title <- "Temp.<br>(°C)"
}
if (i_name == "temperature") {
i_legend_title <- "SST<br>(°C)"
}
if (i_name == "salinity") {
i_legend_title <- "SSS"
}
if (i_name == "so") {
i_legend_title <- "salinity"
}
if (i_name == "chl") {
i_legend_title <- "lg(Chl-a)<br>(lg(mg m<sup>-3</sup>))"
}
if (i_name == "mld") {
i_legend_title <- "MLD<br>(m)"
}
if (i_name == "press") {
i_legend_title <- "pressure<sub>atm</sub><br>(Pa)"
}
if (i_name == "wind") {
i_legend_title <- "Wind <br>(m sec<sup>-1</sup>)"
}
if (i_name == "SSH") {
i_legend_title <- "SSH <br>(m)"
}
if (i_name == "fice") {
i_legend_title <- "Sea ice <br>(%)"
}
if (i_name == "resid_fgco2") {
i_legend_title <-
"Observed"
}
if (i_name == "resid_fgco2_dfco2") {
i_legend_title <-
"ΔfCO<sub>2</sub>"
}
if (i_name == "resid_fgco2_kw_sol") {
i_legend_title <-
"k<sub>w</sub> K<sub>0</sub>"
}
if (i_name == "resid_fgco2_dfco2_kw_sol") {
i_legend_title <-
"k<sub>w</sub> K<sub>0</sub> X ΔfCO<sub>2</sub>"
}
if (i_name == "resid_fgco2_sum") {
i_legend_title <-
"∑"
}
if (i_name == "resid_fgco2_offset") {
i_legend_title <-
"Obs. - ∑"
}
all_labels_breaks <- lst(i_legend_title)
return(all_labels_breaks)
}
x_axis_labels <-
c(
"dco2" = labels_breaks("dco2")$i_legend_title,
"dfco2" = labels_breaks("dfco2")$i_legend_title,
"atm_co2" = labels_breaks("atm_co2")$i_legend_title,
"atm_fco2" = labels_breaks("atm_fco2")$i_legend_title,
"sol" = labels_breaks("sol")$i_legend_title,
"kw" = labels_breaks("kw")$i_legend_title,
"kw_sol" = labels_breaks("kw_sol")$i_legend_title,
"intpp" = labels_breaks("intpp")$i_legend_title,
"no3" = labels_breaks("no3")$i_legend_title,
"o2" = labels_breaks("o2")$i_legend_title,
"dissic" = labels_breaks("dissic")$i_legend_title,
"sdissic" = labels_breaks("sdissic")$i_legend_title,
"cstar" = labels_breaks("cstar")$i_legend_title,
"talk" = labels_breaks("talk")$i_legend_title,
"stalk" = labels_breaks("stalk")$i_legend_title,
"sdissic_stalk" = labels_breaks("sdissic_stalk")$i_legend_title,
"spco2" = labels_breaks("spco2")$i_legend_title,
"sfco2" = labels_breaks("sfco2")$i_legend_title,
"sfco2_total" = labels_breaks("sfco2_total")$i_legend_title,
"sfco2_therm" = labels_breaks("sfco2_therm")$i_legend_title,
"sfco2_nontherm" = labels_breaks("sfco2_nontherm")$i_legend_title,
"fgco2" = labels_breaks("fgco2")$i_legend_title,
"fgco2_hov" = labels_breaks("fgco2_hov")$i_legend_title,
"fgco2_int" = labels_breaks("fgco2_int")$i_legend_title,
"thetao" = labels_breaks("thetao")$i_legend_title,
"temperature" = labels_breaks("temperature")$i_legend_title,
"salinity" = labels_breaks("salinity")$i_legend_title,
"so" = labels_breaks("so")$i_legend_title,
"chl" = labels_breaks("chl")$i_legend_title,
"mld" = labels_breaks("mld")$i_legend_title,
"press" = labels_breaks("press")$i_legend_title,
"wind" = labels_breaks("wind")$i_legend_title,
"SSH" = labels_breaks("SSH")$i_legend_title,
"fice" = labels_breaks("fice")$i_legend_title,
"resid_fgco2" = labels_breaks("resid_fgco2")$i_legend_title,
"resid_fgco2_dfco2" = labels_breaks("resid_fgco2_dfco2")$i_legend_title,
"resid_fgco2_kw_sol" = labels_breaks("resid_fgco2_kw_sol")$i_legend_title,
"resid_fgco2_dfco2_kw_sol" = labels_breaks("resid_fgco2_dfco2_kw_sol")$i_legend_title,
"resid_fgco2_sum" = labels_breaks("resid_fgco2_sum")$i_legend_title,
"resid_fgco2_offset" = labels_breaks("resid_fgco2_offset")$i_legend_title
)
name_quadratic_fit <- c("atm_co2", "atm_fco2", "spco2", "sfco2")
start_year <- 1990
name_divergent <- c("dco2", "dfco2", "fgco2", "fgco2_hov", "fgco2_int")
pco2_product <-
pco2_product %>%
filter(year >= start_year)
pco2_product_interior <-
pco2_product_interior %>%
filter(time >= ymd(paste0(start_year, "-01-01")))
biome_mask <- biome_mask %>%
mutate(area = earth_surf(lat, lon))
pco2_product <-
full_join(pco2_product,
biome_mask)
# set all values outside biome mask to NA
pco2_product <-
pco2_product %>%
mutate(across(-c(lat, lon, time, area, year, month, biome),
~ if_else(is.na(biome), NA, .)))
pco2_product_biome_monthly_global <-
pco2_product %>%
filter(!is.na(fgco2)) %>%
mutate(fgco2_int = fgco2) %>%
mutate(biome = case_when(str_detect(biome, "SO-SPSS|SO-ICE|Arctic") ~ "Polar",
TRUE ~ "Global non-polar")) %>%
filter(biome == "Global non-polar") %>%
select(-c(lon, lat, year, month)) %>%
group_by(time, biome) %>%
summarise(across(-c(fgco2_int, area),
~ weighted.mean(., area, na.rm = TRUE)),
across(fgco2_int,
~ sum(. * area, na.rm = TRUE) * 12.01 * 1e-15)) %>%
ungroup()
pco2_product_biome_monthly_biome <-
pco2_product %>%
filter(!is.na(fgco2)) %>%
mutate(fgco2_int = fgco2) %>%
select(-c(lon, lat, year, month)) %>%
group_by(time, biome) %>%
summarise(across(-c(fgco2_int, area),
~ weighted.mean(., area, na.rm = TRUE)),
across(fgco2_int,
~ sum(. * area, na.rm = TRUE) * 12.01 * 1e-15)) %>%
ungroup()
pco2_product_biome_monthly <-
bind_rows(pco2_product_biome_monthly_global,
pco2_product_biome_monthly_biome)
rm(
pco2_product_biome_monthly_global,
pco2_product_biome_monthly_biome
)
pco2_product_biome_monthly <-
pco2_product_biome_monthly %>%
filter(!is.na(biome))
pco2_product_biome_monthly <-
pco2_product_biome_monthly %>%
mutate(year = year(time),
month = month(time),
.after = time)
pco2_product_biome_monthly <-
pco2_product_biome_monthly %>%
pivot_longer(-c(time, year, month, biome))
pco2_product_biome_annual <-
pco2_product_biome_monthly %>%
group_by(year, biome, name) %>%
summarise(value = mean(value)) %>%
ungroup()
pco2_product_interior <-
left_join(
biome_mask,
pco2_product_interior
)
pco2_product_profiles <- pco2_product_interior %>%
fselect(-c(lat, lon)) %>%
fgroup_by(biome, depth, time) %>% {
add_vars(fgroup_vars(., "unique"),
fmean(.,
w = area,
keep.w = FALSE,
keep.group_vars = FALSE))
}
pco2_product_profiles <-
pco2_product_profiles %>%
mutate(
year = year(time),
month = month(time)
)
gc()
pco2_product_interior <-
left_join(
region_mask,
pco2_product_interior %>% select(-c(biome, area))
)
pco2_product_zonal_mean <- pco2_product_interior %>%
fselect(-c(lon)) %>%
fgroup_by(region, depth, lat, time) %>% {
add_vars(fgroup_vars(., "unique"),
fmean(.,
keep.group_vars = FALSE))
}
pco2_product_zonal_mean <-
pco2_product_zonal_mean %>%
mutate(
year = year(time),
month = month(time)
)
gc()
rm(pco2_product_interior)
gc()
The following Hovmoeller plots show the value of each variable as provided through the pCO2 product. Hovmoeller plots are first presented as annual means, and than as monthly means.
pco2_product_hovmoeller_annual <-
pco2_product %>%
mutate(fgco2_int = fgco2) %>%
select(-c(lon, time, month, biome)) %>%
group_by(year, lat) %>%
summarise(across(-c(fgco2_int, area),
~ weighted.mean(., area, na.rm = TRUE)),
across(fgco2_int,
~ sum(. * area, na.rm = TRUE) * 12.01 * 1e-15)) %>%
ungroup() %>%
rename(fgco2_hov = fgco2_int) %>%
filter(fgco2_hov != 0)
pco2_product_hovmoeller_annual <-
pco2_product_hovmoeller_annual %>%
pivot_longer(-c(year, lat)) %>%
drop_na()
# pco2_product_hovmoeller_annual %>%
# filter(!(name %in% name_divergent)) %>%
# group_split(name) %>%
# # tail(5) %>%
# map(
# ~ ggplot(data = .x,
# aes(year, lat, fill = value)) +
# geom_raster() +
# scale_fill_viridis_c(name = labels_breaks(.x %>% distinct(name))) +
# theme(legend.title = element_markdown()) +
# coord_cartesian(expand = 0) +
# labs(title = "Annual means",
# y = "Latitude") +
# theme(axis.title.x = element_blank())
# )
#
# pco2_product_hovmoeller_annual %>%
# filter(name %in% name_divergent) %>%
# group_split(name) %>%
# # head(1) %>%
# map(
# ~ ggplot(data = .x,
# aes(year, lat, fill = value)) +
# geom_raster() +
# scale_fill_gradientn(
# colours = cmocean("curl")(100),
# rescaler = ~ scales::rescale_mid(.x, mid = 0),
# name = labels_breaks(.x %>% distinct(name)),
# limits = c(quantile(.x$value, .01), quantile(.x$value, .99)),
# oob = squish
# ) +
# theme(legend.title = element_markdown()) +
# coord_cartesian(expand = 0) +
# labs(title = "Annual means",
# y = "Latitude") +
# theme(axis.title.x = element_blank())
# )
pco2_product_hovmoeller_monthly <-
pco2_product %>%
mutate(fgco2_int = fgco2) %>%
select(-c(lon, time, biome)) %>%
group_by(year, month, lat) %>%
summarise(across(-c(fgco2_int, area),
~ weighted.mean(., area, na.rm = TRUE)),
across(fgco2_int,
~ sum(. * area, na.rm = TRUE) * 12.01 * 1e-15)) %>%
ungroup() %>%
rename(fgco2_hov = fgco2_int) %>%
filter(fgco2_hov != 0)
pco2_product_hovmoeller_monthly <-
pco2_product_hovmoeller_monthly %>%
pivot_longer(-c(year, month, lat)) %>%
drop_na()
pco2_product_hovmoeller_monthly <-
pco2_product_hovmoeller_monthly %>%
mutate(decimal = year + (month-1) / 12)
# pco2_product_hovmoeller_monthly %>%
# filter(!(name %in% name_divergent)) %>%
# group_split(name) %>%
# # head(1) %>%
# map(
# ~ ggplot(data = .x,
# aes(decimal, lat, fill = value)) +
# geom_raster() +
# scale_fill_viridis_c(name = labels_breaks(.x %>% distinct(name))) +
# theme(legend.title = element_markdown()) +
# labs(title = "Monthly means",
# y = "Latitude") +
# coord_cartesian(expand = 0) +
# theme(axis.title.x = element_blank())
# )
#
# pco2_product_hovmoeller_monthly %>%
# filter(name %in% name_divergent) %>%
# group_split(name) %>%
# # head(1) %>%
# map(
# ~ ggplot(data = .x,
# aes(decimal, lat, fill = value)) +
# geom_raster() +
# scale_fill_gradientn(
# colours = cmocean("curl")(100),
# rescaler = ~ scales::rescale_mid(.x, mid = 0),
# name = labels_breaks(.x %>% distinct(name)),
# limits = c(quantile(.x$value, .01), quantile(.x$value, .99)),
# oob = squish
# )+
# theme(legend.title = element_markdown()) +
# labs(title = "Monthly means",
# y = "Latitude") +
# coord_cartesian(expand = 0) +
# theme(axis.title.x = element_blank())
# )
rm(pco2_product)
gc()
pCO2_product_analysis_2023 <-
knitr::knit_expand(
file = here::here("analysis/child/pCO2_product_analysis.Rmd"),
product_name = "SOM-FFN",
year_anom = 2023
)
For the detection of anomalies at any point in time and space, we fit regression models and compare the fitted to the actual value.
We use linear regression models for all parameters, except for , which are approximated with quadratic fits.
The regression models are fitted to all data since , except 2023.
anomaly_determination <- function(df,...) {
group_by <- quos(...)
# group_by <- quos(lon, lat)
# df <- pco2_product_map_annual
# Linear regression models
df_lm <-
df %>%
filter(year != 2023,
!(name %in% name_quadratic_fit)) %>%
drop_na() %>%
nest(data = -c(name, !!!group_by)) %>%
mutate(fit = map(data, ~ flm(
formula = value ~ year, data = .x
)))
df_lm <-
left_join(
df_lm %>%
unnest_wider(fit) %>%
select(name, !!!group_by,
intercept = `(Intercept)`, slope = year) %>%
mutate(intercept = as.vector(intercept),
slope = as.vector(slope)),
df
) %>%
mutate(fit = intercept + year * slope) %>%
select(name, !!!group_by, year, fit, value) %>%
mutate(resid = value - fit)
# df_lm <-
# df %>%
# filter(year != 2023,
# !(name %in% name_quadratic_fit)) %>%
# drop_na() %>%
# nest(data = -c(name, !!!group_by)) %>%
# mutate(
# fit = map(data, ~ lm(value ~ year, data = .x)),
# tidied = map(fit, tidy),
# augmented = map(fit, augment)
# )
#
#
# df_lm_year_anom <-
# full_join(
# df_lm %>%
# unnest(tidied) %>%
# select(name, !!!group_by, term, estimate) %>%
# pivot_wider(names_from = term,
# values_from = estimate) %>%
# mutate(fit = `(Intercept)` + year * 2023) %>%
# select(name, !!!group_by, fit) %>%
# mutate(year = 2023),
# df %>%
# filter(year == 2023,
# !(name %in% name_quadratic_fit))
# ) %>%
# mutate(resid = value - fit)
#
#
# df_lm <-
# bind_rows(
# df_lm %>%
# unnest(augmented) %>%
# select(name, !!!group_by, year, value, fit = .fitted, resid = .resid),
# df_lm_year_anom
# )
#
# rm(df_lm_year_anom)
# Quadratic regression models
if(any(df %>% distinct(name) %>% pull() %in% name_quadratic_fit)){
df_quadratic <-
df %>%
filter(year != 2023,
name %in% name_quadratic_fit) %>%
drop_na() %>%
nest(data = -c(name, !!!group_by)) %>%
mutate(
fit = map(data, ~ flm(
formula = value ~ year + I(year ^ 2), data = .x))
)
df_quadratic <-
left_join(
df_quadratic %>%
unnest_wider(fit) %>%
select(name, !!!group_by,
intercept = `(Intercept)`, slope = year, slope_squared = `I(year^2)`) %>%
mutate(intercept = as.vector(intercept),
slope = as.vector(slope),
slope_squared = as.vector(slope_squared)),
df
) %>%
mutate(fit = intercept + year * slope + year^2 * slope_squared) %>%
select(name, !!!group_by, year, fit, value) %>%
mutate(resid = value - fit)
# df_quadratic <-
# df %>%
# filter(year != 2023,
# name %in% name_quadratic_fit) %>%
# nest(data = -c(name, !!!group_by)) %>%
# mutate(
# fit = map(data, ~ lm(value ~ year + I(year ^ 2), data = .x)),
# tidied = map(fit, tidy),
# augmented = map(fit, augment)
# )
#
# df_quadratic_year_anom <-
# full_join(
# df_quadratic %>%
# unnest(tidied) %>%
# select(name, !!!group_by, term, estimate) %>%
# pivot_wider(names_from = term,
# values_from = estimate) %>%
# mutate(fit = `(Intercept)` + year * 2023 + `I(year^2)` * 2023 ^ 2) %>%
# select(name, !!!group_by, fit) %>%
# mutate(year = 2023),
# df %>%
# filter(year == 2023,
# name %in% name_quadratic_fit)
# ) %>%
# mutate(resid = value - fit)
#
#
# df_quadratic <-
# bind_rows(
# df_quadratic %>%
# unnest(augmented) %>%
# select(name, !!!group_by, year, value, fit = .fitted, resid = .resid),
# df_quadratic_year_anom
# )
#
# rm(df_quadratic_year_anom)
# Join linear and quadratic regression results
df_anomaly <-
bind_rows(df_lm,
df_quadratic)
rm(df_lm,
df_quadratic)
} else{
df_anomaly <- df_lm
rm(df_lm)
}
df_anomaly <-
df_anomaly %>%
arrange(year)
return(df_anomaly)
}
warm_color <- "#B84A60FF"
cold_color <- "#16877CFF"
p_season <- function(df,
dim_row = "name",
dim_col = "biome",
title = NULL,
var = "resid",
scales = "free_y") {
p <- ggplot(data = df,
aes(month, !!ensym(var)))
if(var == "resid"){
p <- p +
geom_hline(yintercept = 0, linewidth =0.5)
}
p <- p +
geom_path(data = . %>% filter(year != 2023),
aes(group = as.factor(year),
col = as.factor(paste(min(year), max(year), sep = "-"))),
alpha = 0.5)+
geom_path(data = . %>%
filter(year != 2023) %>%
group_by_at(vars(month, dim_col, dim_row)) %>%
summarise(!!ensym(var) := mean(!!ensym(var))),
aes(col = "Climatological\nmean"),
linewidth = 1) +
scale_color_manual(values = c("grey", "black"),
guide = guide_legend(order = 2,
reverse = TRUE)) +
new_scale_color()+
geom_path(data = . %>% filter(year == 2023),
aes(col = as.factor(year)),
linewidth = 1) +
scale_color_manual(
values = warm_color,
guide = guide_legend(order = 1)
) +
scale_x_continuous(breaks = seq(1, 12, 3), expand = c(0, 0)) +
labs(title = title,
x = "Month")
if(df %>% filter(name == "fgco2") %>% nrow() > 0 & "value" %in% names(df)){
df_sink <- df %>%
filter(year == 2023,
name == "fgco2")
p <- p +
geom_point(data = df_sink %>% filter(value < 0),
aes(shape = "Sink"), fill = "white") +
geom_point(data = df_sink %>% filter(value >= 0),
aes(shape = "Source"), fill = "white") +
scale_shape_manual(values = c(25,24))
}
if (!(is.null(dim_col))) {
p <- p +
facet_grid(
as.formula(paste(dim_row, "~", dim_col)),
scales = scales,
labeller = labeller(name = x_axis_labels),
switch = "y"
)
} else {
p <- p +
facet_grid(
as.formula(paste(dim_row, "~ .")),
scales = "free_y",
labeller = labeller(name = x_axis_labels),
switch = "y"
)
}
p <- p +
theme(
strip.text.y.left = element_markdown(),
strip.placement = "outside",
strip.background.y = element_blank(),
axis.title.y = element_blank(),
legend.title = element_blank()
)
p
}
fco2_decomposition <- function(df, ...) {
group_by <- quos(...)
# group_by <- quos(lon, lat, month)
# group_by <- quos(biome, year, month)
pco2_product_biome_monthly_fCO2_decomposition <-
df %>%
filter(name %in% c("temperature", "sfco2"))
pco2_product_biome_monthly_fCO2_decomposition <-
inner_join(
pco2_product_biome_monthly_fCO2_decomposition %>%
filter(name == "temperature") %>%
select(-c(value, fit)) %>%
pivot_wider(values_from = resid),
pco2_product_biome_monthly_fCO2_decomposition %>%
filter(name == "sfco2") %>%
select(-c(value, resid)) %>%
pivot_wider(values_from = fit)
)
pco2_product_biome_monthly_fCO2_decomposition <-
pco2_product_biome_monthly_fCO2_decomposition %>%
mutate(sfco2_therm = (sfco2 * exp(0.0423 * temperature)) - sfco2)
pco2_product_biome_monthly_fCO2_decomposition <-
inner_join(
pco2_product_biome_monthly_fCO2_decomposition,
df %>%
filter(name %in% c("sfco2")) %>%
select(-c(value, fit, name)) %>%
rename(sfco2_total = resid)
)
pco2_product_biome_monthly_fCO2_decomposition <-
pco2_product_biome_monthly_fCO2_decomposition %>%
mutate(sfco2_nontherm = sfco2_total - sfco2_therm)
pco2_product_biome_monthly_fCO2_decomposition <-
pco2_product_biome_monthly_fCO2_decomposition %>%
select(-c(temperature, sfco2)) %>%
pivot_longer(starts_with("sfco2"),
values_to = "resid")
}
fco2_decomposition <- function(df, ...) {
group_by <- quos(...)
# group_by <- quos(lon, lat, month)
# group_by <- quos(biome, year, month)
pco2_product_biome_monthly_fCO2_decomposition <-
df %>%
filter(name %in% c("temperature", "sfco2"))
pco2_product_biome_monthly_fCO2_decomposition <-
inner_join(
pco2_product_biome_monthly_fCO2_decomposition %>%
filter(name == "temperature") %>%
select(-c(value, fit)) %>%
pivot_wider(values_from = resid),
pco2_product_biome_monthly_fCO2_decomposition %>%
filter(name == "sfco2") %>%
select(-c(value, resid)) %>%
pivot_wider(values_from = fit)
)
pco2_product_biome_monthly_fCO2_decomposition <-
pco2_product_biome_monthly_fCO2_decomposition %>%
mutate(
sfco2_therm = (sfco2 * exp(0.0423 * temperature)) - sfco2,
sfco2_nontherm = (sfco2 * exp(-0.0423 * temperature)) - sfco2)
pco2_product_biome_monthly_fCO2_decomposition <-
inner_join(
pco2_product_biome_monthly_fCO2_decomposition,
df %>%
filter(name %in% c("sfco2")) %>%
select(-c(value, fit, name)) %>%
rename(sfco2_total = resid)
)
# pco2_product_biome_monthly_fCO2_decomposition <-
# pco2_product_biome_monthly_fCO2_decomposition %>%
# mutate(sfco2_nontherm = sfco2_total - sfco2_therm)
pco2_product_biome_monthly_fCO2_decomposition <-
pco2_product_biome_monthly_fCO2_decomposition %>%
select(-c(temperature, sfco2)) %>%
pivot_longer(starts_with("sfco2"),
values_to = "resid")
}
flux_attribution <- function(df, ...) {
group_by <- quos(...)
# group_by <- quos(lon, lat, month)
pco2_product_flux_attribution <-
df %>%
filter(name %in% c("dfco2", "kw_sol", "fgco2"))
pco2_product_flux_attribution <-
inner_join(
pco2_product_flux_attribution %>%
select(-c(value, fit)) %>%
pivot_wider(values_from = resid,
names_prefix = "resid_"),
pco2_product_flux_attribution %>%
select(-c(value, resid)) %>%
filter(name != "fgco2") %>%
pivot_wider(values_from = fit)
)
pco2_product_flux_attribution <-
pco2_product_flux_attribution %>%
mutate(
resid_fgco2_dfco2 = resid_dfco2 * kw_sol,
resid_fgco2_kw_sol = resid_kw_sol * dfco2,
resid_fgco2_dfco2_kw_sol = resid_dfco2 * resid_kw_sol
# resid_fgco2_sum = resid_fgco2_dfco2 + resid_fgco2_kw_sol + resid_fgco2_dfco2_kw_sol
)
# pco2_product_flux_attribution <-
# pco2_product_flux_attribution %>%
# mutate(resid_fgco2_offset = resid_fgco2 - resid_fgco2_sum)
pco2_product_flux_attribution <-
pco2_product_flux_attribution %>%
select(!!!group_by, starts_with("resid_fgco2")) %>%
pivot_longer(starts_with("resid_"),
values_to = "resid")
pco2_product_flux_attribution <-
pco2_product_flux_attribution %>%
filter(str_detect(name, "dfco2|kw_sol")) %>%
mutate(name = factor(
name,
levels = c(
"resid_fgco2",
"resid_fgco2_dfco2",
"resid_fgco2_kw_sol",
"resid_fgco2_dfco2_kw_sol",
"resid_fgco2_sum",
"resid_fgco2_offset"
)
))
}
The following maps show the absolute state of each variable in 2023 as provided through the pCO2 product, the change in that variable from 1990 to 2023, as well es the anomalies in 2023. Changes and anomalies are determined based on the predicted value of a linear regression model fit to the data from 1990 to 2022.
Maps are first presented as annual means, and than as monthly means. Note that the 2023 predictions for the monthly maps are done individually for each month, such the mean seasonal anomaly from the annual mean is removed.
Note: The increase the computational speed, I regridded all maps to 5X5° grid.
pco2_product_map_annual_anomaly <-
pco2_product_map_annual %>%
drop_na() %>%
anomaly_determination(lon, lat)
pco2_product_map_annual_anomaly <-
pco2_product_map_annual_anomaly %>%
drop_na()
pco2_product_map_annual_anomaly %>%
filter(year == 2023,
!(name %in% name_divergent)) %>%
group_split(name) %>%
# head(1) %>%
map(
~ map +
geom_tile(data = .x,
aes(lon, lat, fill = value)) +
labs(title = paste("Annual mean", 2023)) +
scale_fill_viridis_c(name = labels_breaks(.x %>% distinct(name))) +
guides(
fill = guide_colorbar(
barheight = unit(0.3, "cm"),
barwidth = unit(6, "cm"),
ticks = TRUE,
ticks.colour = "grey20",
frame.colour = "grey20",
label.position = "top",
direction = "horizontal"
)
) +
theme(legend.title = element_markdown(),
legend.position = "top")
)
pco2_product_map_annual_anomaly %>%
filter(year == 2023,
name %in% name_divergent) %>%
group_split(name) %>%
# head(1) %>%
map( ~ map +
geom_tile(data = .x,
aes(lon, lat, fill = value)) +
labs(title = paste("Annual mean", 2023)) +
scale_fill_gradientn(
colours = cmocean("curl")(100),
rescaler = ~ scales::rescale_mid(.x, mid = 0),
name = labels_breaks(.x %>% distinct(name)),
limits = c(quantile(.x$value, .01), quantile(.x$value, .99)),
oob = squish
) +
guides(
fill = guide_colorbar(
barheight = unit(0.3, "cm"),
barwidth = unit(6, "cm"),
ticks = TRUE,
ticks.colour = "grey20",
frame.colour = "grey20",
label.position = "top",
direction = "horizontal"
)
) +
theme(legend.title = element_markdown(),
legend.position = "top")
)
pco2_product_map_annual_anomaly %>%
group_by(name) %>%
filter(year %in% c(min(year), max(year), 2023)) %>%
ungroup() %>%
select(-c(value, resid)) %>%
filter(year %in% c(min(year), max(year))) %>%
arrange(year) %>%
group_by(lon, lat, name) %>%
mutate(change = fit - lag(fit),
period = paste(lag(year), year, sep = "-")) %>%
ungroup() %>%
filter(!is.na(change)) %>%
group_split(name) %>%
# head(1) %>%
map(
~ map +
geom_tile(data = .x,
aes(lon, lat, fill = change)) +
labs(title = paste("Change: ",.x$period)) +
scale_fill_gradientn(
colours = cmocean("curl")(100),
rescaler = ~ scales::rescale_mid(.x, mid = 0),
name = labels_breaks(.x %>% distinct(name)),
limits = c(quantile(.x$change, .01), quantile(.x$change, .99)),
oob = squish
) +
guides(
fill = guide_colorbar(
barheight = unit(0.3, "cm"),
barwidth = unit(6, "cm"),
ticks = TRUE,
ticks.colour = "grey20",
frame.colour = "grey20",
label.position = "top",
direction = "horizontal"
)
) +
theme(legend.title = element_markdown(),
legend.position = "top")
)
Version | Author | Date |
---|---|---|
8b8904a | jens-daniel-mueller | 2024-06-26 |
pco2_product_map_annual_anomaly %>%
filter(year == 2023) %>%
group_split(name) %>%
# head(1) %>%
map( ~ map +
geom_tile(data = .x,
aes(lon, lat, fill = resid)) +
labs(title = paste(2023,"anomaly")) +
scale_fill_gradientn(
colours = cmocean("curl")(100),
rescaler = ~ scales::rescale_mid(.x, mid = 0),
name = labels_breaks(.x %>% distinct(name)),
limits = c(quantile(.x$resid, .01), quantile(.x$resid, .99)),
oob = squish
)+
guides(
fill = guide_colorbar(
barheight = unit(0.3, "cm"),
barwidth = unit(6, "cm"),
ticks = TRUE,
ticks.colour = "grey20",
frame.colour = "grey20",
label.position = "top",
direction = "horizontal"
)
) +
theme(legend.title = element_markdown(),
legend.position = "top")
)
Version | Author | Date |
---|---|---|
8b8904a | jens-daniel-mueller | 2024-06-26 |
pco2_product_map_annual_slope <-
pco2_product_map_annual_anomaly %>%
filter(year != 2023) %>%
select(year, lon, lat, resid, name) %>%
pivot_wider(values_from = resid) %>%
select(lon, lat, fgco2, temperature) %>%
drop_na() %>%
nest(data = -c(lon, lat)) %>%
mutate(fit = map(data, ~ flm(
formula = fgco2 ~ temperature, data = .x
)))
pco2_product_map_annual_slope <-
pco2_product_map_annual_slope %>%
unnest_wider(fit) %>%
select(lon, lat, slope = temperature) %>%
mutate(slope = as.vector(slope))
map +
geom_tile(data = pco2_product_map_annual_slope,
aes(lon, lat, fill = slope)) +
scale_fill_gradientn(
colours = cmocean("curl")(100),
rescaler = ~ scales::rescale_mid(.x, mid = 0),
limits = c(
quantile(pco2_product_map_annual_slope$slope,.01),
quantile(pco2_product_map_annual_slope$slope, .99)),
oob = squish
) +
labs(title = "Correlation of historic annual flux and SST anomalies") +
guides(
fill = guide_colorbar(
barheight = unit(0.3, "cm"),
barwidth = unit(6, "cm"),
ticks = TRUE,
ticks.colour = "grey20",
frame.colour = "grey20",
label.position = "top",
direction = "horizontal"
)
) +
theme(legend.title = element_markdown(), legend.position = "top")
pco2_product_map_annual_slope %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_map_annual_slope.csv"
)
)
pco2_product_map_annual_anomaly %>%
filter(year == 2023) %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_map_annual_anomaly.csv"
)
)
rm(pco2_product_map_annual_anomaly,
pco2_product_map_annual_slope)
gc()
pco2_product_map_monthly_anomaly <-
pco2_product_map_monthly %>%
drop_na() %>%
anomaly_determination(lon, lat, month)
pco2_product_map_monthly_anomaly <-
pco2_product_map_monthly_anomaly %>%
drop_na()
pco2_product_map_monthly_anomaly %>%
filter(year == 2023, !(name %in% name_divergent)) %>%
group_split(name) %>%
# head(1) %>%
map(
~ map +
geom_tile(data = .x, aes(lon, lat, fill = value)) +
labs(title = paste("Monthly means", 2023)) +
scale_fill_viridis_c(name = labels_breaks(.x %>% distinct(name))) +
guides(
fill = guide_colorbar(
barheight = unit(0.3, "cm"),
barwidth = unit(6, "cm"),
ticks = TRUE,
ticks.colour = "grey20",
frame.colour = "grey20",
label.position = "top",
direction = "horizontal"
)
) +
theme(legend.title = element_markdown(), legend.position = "top") +
facet_wrap(~ month, ncol = 2)
)
pco2_product_map_monthly_anomaly %>%
filter(year == 2023, name %in% name_divergent) %>%
group_split(name) %>%
# head(1) %>%
map(
~ map +
geom_tile(data = .x, aes(lon, lat, fill = value)) +
labs(title = paste("Monthly means", 2023)) +
scale_fill_gradientn(
colours = cmocean("curl")(100),
rescaler = ~ scales::rescale_mid(.x, mid = 0),
name = labels_breaks(.x %>% distinct(name)),
limits = c(quantile(.x$value, .01), quantile(.x$value, .99)),
oob = squish
) +
guides(
fill = guide_colorbar(
barheight = unit(0.3, "cm"),
barwidth = unit(6, "cm"),
ticks = TRUE,
ticks.colour = "grey20",
frame.colour = "grey20",
label.position = "top",
direction = "horizontal"
)
) +
theme(legend.title = element_markdown(), legend.position = "top") +
facet_wrap( ~ month, ncol = 2)
)
pco2_product_map_monthly_anomaly %>%
group_by(name) %>%
filter(year %in% c(min(year), max(year))) %>%
ungroup() %>%
select(-c(value, resid)) %>%
arrange(year) %>%
group_by(lon, lat, name, month) %>%
mutate(change = fit - lag(fit),
period = paste(lag(year), year, sep = "-")) %>%
ungroup() %>%
filter(!is.na(change)) %>%
group_split(name) %>%
head(1) %>%
map(
~ map +
geom_tile(data = .x, aes(lon, lat, fill = change)) +
labs(title = paste("Change: ", .x$period)) +
scale_fill_gradientn(
colours = cmocean("curl")(100),
rescaler = ~ scales::rescale_mid(.x, mid = 0),
name = labels_breaks(.x %>% distinct(name)),
limits = c(quantile(.x$change, .01), quantile(.x$change, .99)),
oob = squish
) +
guides(
fill = guide_colorbar(
barheight = unit(0.3, "cm"),
barwidth = unit(6, "cm"),
ticks = TRUE,
ticks.colour = "grey20",
frame.colour = "grey20",
label.position = "top",
direction = "horizontal"
)
) +
theme(legend.title = element_markdown(), legend.position = "top") +
facet_wrap(~ month, ncol = 2)
)
pco2_product_map_monthly_anomaly %>%
filter(year == 2023) %>%
group_split(name) %>%
# head(1) %>%
map(
~ map +
geom_tile(data = .x, aes(lon, lat, fill = resid)) +
labs(title = paste(2023, "anomaly")) +
scale_fill_gradientn(
colours = cmocean("curl")(100),
rescaler = ~ scales::rescale_mid(.x, mid = 0),
name = labels_breaks(.x %>% distinct(name)),
limits = c(quantile(.x$resid, .01), quantile(.x$resid, .99)),
oob = squish
) +
guides(
fill = guide_colorbar(
barheight = unit(0.3, "cm"),
barwidth = unit(6, "cm"),
ticks = TRUE,
ticks.colour = "grey20",
frame.colour = "grey20",
label.position = "top",
direction = "horizontal"
)
) +
theme(legend.title = element_markdown(), legend.position = "top") +
facet_wrap( ~ month, ncol = 2)
)
pco2_product_map_monthly_fCO2_decomposition <-
fco2_decomposition(pco2_product_map_monthly_anomaly,
year, month, lon, lat)
# pco2_product_map_monthly_fCO2_decomposition %>%
# filter(year == 2023) %>%
# mutate(product == "pco2 product") %>%
# group_split(product) %>%
# head(1) %>%
# map(
# ~ map +
# geom_tile(data = .x,
# aes(lon, lat, fill = resid)) +
# labs(title = .x$product) +
# scale_fill_gradientn(
# colours = cmocean("curl")(100),
# rescaler = ~ scales::rescale_mid(.x, mid = 0),
# name = labels_breaks("sfco2"),
# limits = c(quantile(.x$resid, .01), quantile(.x$resid, .99)),
# oob = squish
# ) +
# facet_grid(month ~ name,
# labeller = labeller(name = x_axis_labels)) +
# guides(
# fill = guide_colorbar(
# barheight = unit(0.3, "cm"),
# barwidth = unit(6, "cm"),
# ticks = TRUE,
# ticks.colour = "grey20",
# frame.colour = "grey20",
# label.position = "top",
# direction = "horizontal"
# )
# ) +
# theme(legend.title = element_markdown(),
# legend.position = "top")
# )
pco2_product_map_annual_fCO2_decomposition <-
pco2_product_map_monthly_fCO2_decomposition %>%
select(year, lat, lon, name, resid) %>%
fgroup_by(year, lat, lon, name) %>%
fmean()
gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3208887 171.4 86750897 4633.0 264742725 14138.8
Vcells 2543905391 19408.5 6442228328 49150.4 6442219861 49150.3
map +
geom_tile(data = pco2_product_map_annual_fCO2_decomposition %>%
filter(year == 2023), aes(lon, lat, fill = resid)) +
scale_fill_gradientn(
colours = cmocean("curl")(100),
rescaler = ~ scales::rescale_mid(.x, mid = 0),
name = labels_breaks("sfco2"),
limits = c(
quantile(pco2_product_map_annual_fCO2_decomposition$resid, .01),
quantile(pco2_product_map_annual_fCO2_decomposition$resid, .99)
),
oob = squish
) +
facet_wrap( ~ name,
ncol = 2,
labeller = labeller(name = x_axis_labels)) +
guides(
fill = guide_colorbar(
barheight = unit(0.3, "cm"),
barwidth = unit(6, "cm"),
ticks = TRUE,
ticks.colour = "grey20",
frame.colour = "grey20",
label.position = "top",
direction = "horizontal"
)
) +
theme(legend.title = element_markdown(), legend.position = "top")
pco2_product_map_monthly_flux_attribution <-
flux_attribution(pco2_product_map_monthly_anomaly,
year, month, lon, lat)
# pco2_product_map_monthly_flux_attribution %>%
# filter(year == 2023) %>%
# drop_na() %>%
# mutate(product == "pco2 product") %>%
# group_split(product) %>%
# head(1) %>%
# map(
# ~ map +
# geom_tile(data = .x,
# aes(lon, lat, fill = resid)) +
# labs(subtitle = .x$product) +
# scale_fill_gradientn(
# colours = cmocean("curl")(100),
# rescaler = ~ scales::rescale_mid(.x, mid = 0),
# name = labels_breaks("fgco2"),
# limits = c(quantile(.x$resid, .01), quantile(.x$resid, .99)),
# oob = squish
# ) +
# theme(legend.title = element_markdown(),
# legend.position = "bottom") +
# facet_grid(month ~ name,
# labeller = labeller(name = x_axis_labels)) +
# guides(
# fill = guide_colorbar(
# barheight = unit(0.3, "cm"),
# barwidth = unit(6, "cm"),
# ticks = TRUE,
# ticks.colour = "grey20",
# frame.colour = "grey20",
# label.position = "top",
# direction = "horizontal"
# )
# ) +
# theme(legend.title = element_markdown(),
# legend.position = "top",
# strip.text.x.top = element_markdown())
# )
pco2_product_map_annual_flux_attribution <-
pco2_product_map_monthly_flux_attribution %>%
group_by(year, lat, lon, name) %>%
summarise(resid = mean(resid, na.rm = TRUE)) %>%
ungroup()
map +
geom_tile(data = pco2_product_map_annual_flux_attribution %>%
filter(year == 2023), aes(lon, lat, fill = resid)) +
scale_fill_gradientn(
colours = cmocean("curl")(100),
rescaler = ~ scales::rescale_mid(.x, mid = 0),
name = labels_breaks("fgco2"),
limits = c(
quantile(pco2_product_map_annual_flux_attribution$resid, .01, na.rm = TRUE),
quantile(pco2_product_map_annual_flux_attribution$resid, .99, na.rm = TRUE)
),
oob = squish
) +
theme(legend.title = element_markdown(), legend.position = "bottom") +
facet_wrap(~ name,
ncol = 2,
labeller = labeller(name = x_axis_labels)) +
guides(
fill = guide_colorbar(
barheight = unit(0.3, "cm"),
barwidth = unit(6, "cm"),
ticks = TRUE,
ticks.colour = "grey20",
frame.colour = "grey20",
label.position = "top",
direction = "horizontal"
)
) +
theme(
legend.title = element_markdown(),
legend.position = "top",
strip.text.x.top = element_markdown()
)
gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3229675 172.5 69400718 3706.4 264742725 14138.8
Vcells 2810617050 21443.4 6442228328 49150.4 6442219861 49150.3
pco2_product_map_monthly_anomaly %>%
filter(year == 2023) %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_map_monthly_anomaly.csv"
)
)
pco2_product_map_annual_flux_attribution %>%
filter(year == 2023) %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_map_annual_flux_attribution.csv"
)
)
pco2_product_map_annual_fCO2_decomposition %>%
filter(year == 2023) %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_map_annual_fCO2_decomposition.csv"
)
)
pco2_product_map_monthly_flux_attribution %>%
filter(year == 2023) %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_map_monthly_flux_attribution.csv"
)
)
pco2_product_map_monthly_fCO2_decomposition %>%
filter(year == 2023) %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_map_monthly_fCO2_decomposition.csv"
)
)
rm(pco2_product_map_annual_flux_attribution,
pco2_product_map_annual_fCO2_decomposition)
gc()
The following Hovmoeller plots show the anomalies from the prediction of the linear/quadratic fits.
Hovmoeller plots are first presented as annual means, and than as monthly means. Note that the predictions for the monthly Hovmoeller plots are done individually for each month, such the mean seasonal anomaly from the annual mean is removed.
pco2_product_hovmoeller_annual_anomaly <-
pco2_product_hovmoeller_annual %>%
anomaly_determination(lat) %>%
filter(!is.na(resid))
pco2_product_hovmoeller_annual_anomaly %>%
# filter(name == "mld") %>%
group_split(name) %>%
# head(1) %>%
map(
~ ggplot(data = .x, aes(year, lat, fill = resid)) +
geom_raster() +
scale_fill_gradientn(
colours = cmocean("curl")(100),
rescaler = ~ scales::rescale_mid(.x, mid = 0),
name = labels_breaks(.x %>% distinct(name)),
limits = c(quantile(.x$resid, .01), quantile(.x$resid, .99)),
oob = squish
) +
coord_cartesian(expand = 0) +
labs(title = "Annual mean anomalies", y = "Latitude") +
guides(
fill = guide_colorbar(
barheight = unit(0.3, "cm"),
barwidth = unit(6, "cm"),
ticks = TRUE,
ticks.colour = "grey20",
frame.colour = "grey20",
label.position = "top",
direction = "horizontal"
)
) +
theme(legend.title = element_markdown(), legend.position = "top")
)
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_hovmoeller_monthly_anomaly <-
pco2_product_hovmoeller_monthly %>%
select(-c(decimal)) %>%
anomaly_determination(lat, month) %>%
filter(!is.na(resid))
pco2_product_hovmoeller_monthly_anomaly <-
pco2_product_hovmoeller_monthly_anomaly %>%
mutate(decimal = year + (month - 1) / 12)
pco2_product_hovmoeller_monthly_anomaly %>%
group_split(name) %>%
# head(1) %>%
map(
~ ggplot(data = .x,
aes(decimal, lat, fill = resid)) +
geom_raster() +
scale_fill_gradientn(
colours = cmocean("curl")(100),
rescaler = ~ scales::rescale_mid(.x, mid = 0),
name = labels_breaks(.x %>% distinct(name)),
limits = c(quantile(.x$resid, .01), quantile(.x$resid, .99)),
oob = squish
) +
coord_cartesian(expand = 0) +
labs(title = "Monthly mean anomalies",
y = "Latitude") +
guides(
fill = guide_colorbar(
barheight = unit(0.3, "cm"),
barwidth = unit(6, "cm"),
ticks = TRUE,
ticks.colour = "grey20",
frame.colour = "grey20",
label.position = "top",
direction = "horizontal"
)
) +
theme(legend.title = element_markdown(), legend.position = "top")
)
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_hovmoeller_monthly_anomaly %>%
filter(between(year, 2023-2, 2023)) %>%
group_split(name) %>%
# head(1) %>%
map(
~ ggplot(data = .x,
aes(decimal, lat, fill = resid)) +
geom_raster() +
scale_fill_gradientn(
colours = cmocean("curl")(100),
rescaler = ~ scales::rescale_mid(.x, mid = 0),
name = labels_breaks(.x %>% distinct(name)),
limits = c(quantile(.x$resid, .01), quantile(.x$resid, .99)),
oob = squish
) +
coord_cartesian(expand = 0) +
labs(title = "Monthly mean anomalies",
y = "Latitude") +
guides(
fill = guide_colorbar(
barheight = unit(0.3, "cm"),
barwidth = unit(6, "cm"),
ticks = TRUE,
ticks.colour = "grey20",
frame.colour = "grey20",
label.position = "top",
direction = "horizontal"
)
) +
theme(legend.title = element_markdown(), legend.position = "top")
)
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
de65385 | jens-daniel-mueller | 2024-06-12 |
f4a8ec9 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
5e77ff9 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_hovmoeller_monthly_anomaly %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_hovmoeller_monthly_anomaly.csv"
)
)
rm(
pco2_product_hovmoeller_annual,
pco2_product_hovmoeller_monthly,
pco2_product_hovmoeller_annual_anomaly,
pco2_product_hovmoeller_monthly_anomaly
)
gc()
The following plots show regionally averaged (or integrated) values of each variable as provided through the pCO2 product, as well as the anomalies from the prediction of a linear/quadratic fit.
Anomalies are first presented relative to the predicted annual mean of each year, hence preserving the seasonality. Furthermore, anomalies are presented relative to the predicted monthly mean values, such that the mean seasonality is removed.
fig.height <- pco2_product_biome_monthly %>%
distinct(name) %>%
nrow()
fig.height <- (fig.height + 2) * 0.1
pco2_product_biome_monthly %>%
filter(biome %in% "Global non-polar") %>%
ggplot(aes(month, value, group = as.factor(year))) +
geom_path(data = . %>% filter(!between(year, 2023-1, 2023)),
aes(col = year)) +
scale_color_grayC() +
new_scale_color() +
geom_path(data = . %>% filter(between(year, 2023-1, 2023)),
aes(col = as.factor(year)),
linewidth = 1) +
scale_color_manual(values = c("orange", "red"),
guide = guide_legend(reverse = TRUE,
order = 1)) +
scale_x_continuous(breaks = seq(1, 12, 3), expand = c(0, 0)) +
labs(title = "Absolute values | Global non-polar") +
facet_wrap(name ~ .,
scales = "free_y",
labeller = labeller(name = x_axis_labels),
strip.position = "left",
ncol = 2) +
theme(
strip.text.y.left = element_markdown(),
strip.placement = "outside",
strip.background.y = element_blank(),
legend.title = element_blank(),
axis.title.y = element_blank()
)
Version | Author | Date |
---|---|---|
e827817 | jens-daniel-mueller | 2024-09-09 |
f220529 | jens-daniel-mueller | 2024-08-22 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_biome_monthly %>%
filter(biome %in% key_biomes) %>%
ggplot(aes(month, value, group = as.factor(year))) +
geom_path(data = . %>% filter(!between(year, 2023-1, 2023)),
aes(col = year)) +
scale_color_grayC() +
new_scale_color() +
geom_path(data = . %>% filter(between(year, 2023-1, 2023)),
aes(col = as.factor(year)),
linewidth = 1) +
scale_color_manual(values = c("orange", "red"),
guide = guide_legend(reverse = TRUE,
order = 1)) +
scale_x_continuous(breaks = seq(1, 12, 3), expand = c(0, 0)) +
labs(title = "Absolute values | Selected biomes") +
facet_grid(name ~ biome,
scales = "free_y",
labeller = labeller(name = x_axis_labels),
switch = "y") +
theme(
strip.text.y.left = element_markdown(),
strip.placement = "outside",
strip.background.y = element_blank(),
legend.title = element_blank(),
axis.title.y = element_blank()
)
Version | Author | Date |
---|---|---|
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_biome_monthly %>%
filter(biome %in% key_biomes) %>%
group_split(biome) %>%
# head(1) %>%
map(
~ ggplot(data = .x,
aes(month, value, group = as.factor(year))) +
geom_path(data = . %>% filter(!between(year, 2023-1, 2023)),
aes(col = year)) +
scale_color_grayC() +
new_scale_color() +
geom_path(
data = . %>% filter(between(year, 2023-1, 2023)),
aes(col = as.factor(year)),
linewidth = 1
) +
scale_color_manual(
values = c("orange", "red"),
guide = guide_legend(reverse = TRUE,
order = 1)
) +
scale_x_continuous(breaks = seq(1, 12, 3), expand = c(0, 0)) +
labs(title = paste("Absolute values |", .x$biome)) +
facet_wrap(name ~ .,
scales = "free_y",
labeller = labeller(name = x_axis_labels),
strip.position = "left",
ncol = 2) +
theme(
strip.text.y.left = element_markdown(),
strip.placement = "outside",
strip.background.y = element_blank(),
legend.title = element_blank(),
axis.title.y = element_blank()
)
)
Version | Author | Date |
---|---|---|
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_biome_annual %>%
filter(biome %in% "Global non-polar") %>%
ggplot(aes(year, value)) +
geom_path() +
geom_point(data = . %>% filter(year != 2023)) +
geom_point(data = . %>% filter(year == 2023),
shape = 1) +
geom_smooth(data = . %>% filter(year != 2023,
!(name %in% name_quadratic_fit)),
method = "lm",
fullrange = TRUE,
aes(col = "linear"),
se = FALSE) +
geom_smooth(data = . %>% filter(year != 2023,
name %in% name_quadratic_fit),
method = "lm",
fullrange = TRUE,
formula = y ~ x + I(x^2),
aes(col = "quadratic"),
se = FALSE) +
scale_color_brewer(
palette = "Set1",
name = paste("Regression fit\nexcl.", 2023)) +
scale_x_continuous(breaks = seq(1980, 2020, 20)) +
labs(title = "Annual mean trends | Global non-polar") +
facet_wrap(name ~ .,
scales = "free_y",
labeller = labeller(name = x_axis_labels),
strip.position = "left",
ncol = 2) +
theme(
strip.text.y.left = element_markdown(),
strip.placement = "outside",
strip.background.y = element_blank(),
axis.title = element_blank()
)
Version | Author | Date |
---|---|---|
e827817 | jens-daniel-mueller | 2024-09-09 |
f220529 | jens-daniel-mueller | 2024-08-22 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_biome_annual %>%
filter(biome %in% key_biomes) %>%
ggplot(aes(year, value)) +
geom_path() +
geom_point(data = . %>% filter(year != 2023),
size = 0.2) +
geom_point(data = . %>% filter(year == 2023),
shape = 1) +
geom_smooth(data = . %>% filter(year != 2023,
!(name %in% name_quadratic_fit)),
method = "lm",
fullrange = TRUE,
aes(col = "linear"),
se = FALSE) +
geom_smooth(data = . %>% filter(year != 2023,
name %in% name_quadratic_fit),
method = "lm",
fullrange = TRUE,
formula = y ~ x + I(x^2),
aes(col = "quadratic"),
se = FALSE) +
scale_color_brewer(
palette = "Set1",
name = paste("Regression fit\nexcl.", 2023)) +
scale_x_continuous(breaks = seq(1980, 2020, 20)) +
labs(title = "Annual mean trends | Selected biomes") +
facet_grid(name ~ biome,
scales = "free_y",
labeller = labeller(name = x_axis_labels),
switch = "y") +
theme(
strip.text.y.left = element_markdown(),
strip.placement = "outside",
strip.background.y = element_blank(),
axis.title = element_blank()
)
Version | Author | Date |
---|---|---|
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_biome_annual_anomaly <-
pco2_product_biome_annual %>%
anomaly_determination(biome)
pco2_product_biome_annual_anomaly %>%
filter(biome %in% "Global non-polar") %>%
ggplot(aes(year, resid)) +
geom_hline(yintercept = 0) +
geom_path() +
geom_point(data = . %>% filter(!between(year, 2023-1, 2023)),
aes(fill = year),
shape = 21) +
scale_fill_grayC() +
new_scale_fill() +
geom_point(data = . %>% filter(between(year, 2023-1, 2023)),
aes(fill = as.factor(year)),
shape = 21, size = 2) +
scale_fill_manual(values = c("orange", "red"),
guide = guide_legend(reverse = TRUE,
order = 1)) +
scale_x_continuous(breaks = seq(1980, 2020, 20)) +
labs(title = "Residual from fit to annual means (actual - predicted) | Global non-polar") +
facet_wrap(name ~ .,
scales = "free_y",
labeller = labeller(name = x_axis_labels),
strip.position = "left",
ncol = 2) +
theme(
strip.text.y.left = element_markdown(),
strip.placement = "outside",
strip.background.y = element_blank(),
axis.title = element_blank(),
legend.title = element_blank()
)
Version | Author | Date |
---|---|---|
e827817 | jens-daniel-mueller | 2024-09-09 |
f220529 | jens-daniel-mueller | 2024-08-22 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_biome_annual_anomaly %>%
filter(biome %in% key_biomes) %>%
ggplot(aes(year, resid)) +
geom_hline(yintercept = 0) +
geom_path() +
geom_point(data = . %>% filter(!between(year, 2023-1, 2023)),
aes(fill = year),
shape = 21) +
scale_fill_grayC() +
new_scale_fill() +
geom_point(data = . %>% filter(between(year, 2023-1, 2023)),
aes(fill = as.factor(year)),
shape = 21, size = 2) +
scale_fill_manual(values = c("orange", "red"),
guide = guide_legend(reverse = TRUE,
order = 1)) +
scale_x_continuous(breaks = seq(1980, 2020, 20)) +
labs(title = "Residual from fit to annual means (actual - predicted) | Selected biomes") +
facet_grid(name ~ biome,
scales = "free_y",
labeller = labeller(name = x_axis_labels),
switch = "y") +
theme(
strip.text.y.left = element_markdown(),
strip.placement = "outside",
strip.background.y = element_blank(),
axis.title = element_blank(),
legend.title = element_blank()
)
Version | Author | Date |
---|---|---|
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_biome_annual_anomaly %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_biome_annual_anomaly.csv"
)
)
pco2_product_biome_annual_detrended <-
full_join(pco2_product_biome_monthly,
pco2_product_biome_annual_anomaly %>% select(-c(value, resid))) %>%
mutate(resid = value - fit)
pco2_product_biome_annual_detrended %>%
filter(biome %in% "Global non-polar") %>%
ggplot(aes(month, resid, group = as.factor(year))) +
geom_path(data = . %>% filter(!between(year, 2023-1, 2023)),
aes(col = year)) +
scale_color_grayC() +
new_scale_color() +
geom_path(data = . %>% filter(between(year, 2023-1, 2023)),
aes(col = as.factor(year)),
linewidth = 1) +
scale_color_manual(values = c("orange", "red"),
guide = guide_legend(reverse = TRUE,
order = 1)) +
scale_x_continuous(breaks = seq(1, 12, 3), expand = c(0, 0)) +
labs(title = "Anomalies from predicted annual mean | Global non-polar") +
facet_wrap(name ~ .,
scales = "free_y",
labeller = labeller(name = x_axis_labels),
strip.position = "left",
ncol = 2) +
theme(
strip.text.y.left = element_markdown(),
strip.placement = "outside",
strip.background.y = element_blank(),
axis.title.y = element_blank(),
legend.title = element_blank()
)
Version | Author | Date |
---|---|---|
e827817 | jens-daniel-mueller | 2024-09-09 |
f220529 | jens-daniel-mueller | 2024-08-22 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_biome_annual_detrended %>%
filter(biome %in% key_biomes) %>%
ggplot(aes(month, resid, group = as.factor(year))) +
geom_path(data = . %>% filter(!between(year, 2023-1, 2023)),
aes(col = year)) +
scale_color_grayC() +
new_scale_color() +
geom_path(data = . %>% filter(between(year, 2023-1, 2023)),
aes(col = as.factor(year)),
linewidth = 1) +
scale_color_manual(values = c("orange", "red"),
guide = guide_legend(reverse = TRUE,
order = 1)) +
scale_x_continuous(breaks = seq(1, 12, 3), expand = c(0, 0)) +
labs(title = "Anomalies from predicted annual mean | Selected biomes") +
facet_grid(name ~ biome,
scales = "free_y",
labeller = labeller(name = x_axis_labels),
switch = "y") +
theme(
strip.text.y.left = element_markdown(),
strip.placement = "outside",
strip.background.y = element_blank(),
axis.title.y = element_blank(),
legend.title = element_blank(),
axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)
)
Version | Author | Date |
---|---|---|
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_biome_annual_detrended %>%
filter(biome %in% key_biomes) %>%
group_split(biome) %>%
# head(1) %>%
map(
~ ggplot(data = .x,
aes(month, resid, group = as.factor(year))) +
geom_path(data = . %>% filter(!between(year, 2023-1, 2023)),
aes(col = year)) +
scale_color_grayC() +
new_scale_color() +
geom_path(
data = . %>% filter(between(year, 2023-1, 2023)),
aes(col = as.factor(year)),
linewidth = 1
) +
scale_color_manual(
values = c("orange", "red"),
guide = guide_legend(reverse = TRUE,
order = 1)
) +
scale_x_continuous(breaks = seq(1, 12, 3), expand = c(0, 0)) +
labs(title = paste("Anomalies from predicted annual mean |", .x$biome)) +
facet_wrap(
name ~ .,
scales = "free_y",
labeller = labeller(name = x_axis_labels),
strip.position = "left",
ncol = 2
) +
theme(
strip.text.y.left = element_markdown(),
strip.placement = "outside",
strip.background.y = element_blank(),
axis.title = element_blank(),
legend.title = element_blank()
)
)
Version | Author | Date |
---|---|---|
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_biome_annual_detrended %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_biome_annual_detrended.csv"
)
)
# pco2_product_biome_monthly %>%
# filter(biome %in% "Global non-polar") %>%
# mutate(month = as.factor(month)) %>%
# ggplot(aes(year, value, col = month)) +
# # geom_point() +
# geom_smooth(data = . %>% filter(year != 2023,
# !(name %in% name_quadratic_fit)),
# method = "lm",
# se = FALSE,
# fullrange = TRUE) +
# geom_smooth(
# data = . %>% filter(year != 2023,
# name %in% name_quadratic_fit),
# method = "lm",
# fullrange = TRUE,
# formula = y ~ x + I(x ^ 2),
# se = FALSE
# ) +
# scale_color_scico_d(palette = "romaO",
# name = paste("Regression fit\nexcl.", 2023)) +
# scale_x_continuous(breaks = seq(1980, 2020, 20)) +
# labs(title = "Monthly mean trends | Global non-polar") +
# facet_wrap(name ~ .,
# scales = "free_y",
# labeller = labeller(name = x_axis_labels),
# strip.position = "left",
# ncol = 2) +
# theme(
# strip.text.y.left = element_markdown(),
# strip.placement = "outside",
# strip.background.y = element_blank(),
# axis.title = element_blank()
# )
#
# pco2_product_biome_monthly %>%
# filter(biome %in% key_biomes) %>%
# mutate(month = as.factor(month)) %>%
# ggplot(aes(year, value, col = month)) +
# # geom_point() +
# geom_smooth(data = . %>% filter(year != 2023,
# !(name %in% name_quadratic_fit)),
# method = "lm",
# fullrange = TRUE,
# se = FALSE) +
# geom_smooth(
# data = . %>% filter(year != 2023,
# name %in% name_quadratic_fit),
# method = "lm",
# fullrange = TRUE,
# formula = y ~ x + I(x ^ 2),
# se = FALSE
# ) +
# scale_color_scico_d(palette = "romaO",
# name = paste("Regression fit\nexcl.", 2023)) +
# scale_x_continuous(breaks = seq(1980, 2020, 20)) +
# labs(title = "Monthly mean trends | Selected biomes") +
# facet_grid(name ~ biome,
# scales = "free_y",
# labeller = labeller(name = x_axis_labels),
# switch = "y") +
# theme(
# strip.text.y.left = element_markdown(),
# strip.placement = "outside",
# strip.background.y = element_blank(),
# axis.title = element_blank()
# )
pco2_product_biome_monthly_anomaly <-
pco2_product_biome_monthly %>%
anomaly_determination(biome, month)
# pco2_product_biome_monthly_anomaly %>%
# filter(biome %in% "Global non-polar") %>%
# group_split(month) %>%
# head(1) %>%
# map(
# ~ ggplot(data = .x,
# aes(year, resid)) +
# geom_hline(yintercept = 0) +
# geom_path() +
# geom_point(
# data = . %>% filter(!between(year, 2023-1, 2023)),
# aes(fill = year),
# shape = 21
# ) +
# scale_fill_grayC() +
# new_scale_fill() +
# geom_point(
# data = . %>% filter(between(year, 2023-1, 2023)),
# aes(fill = as.factor(year)),
# shape = 21,
# size = 2
# ) +
# scale_fill_manual(
# values = c("orange", "red"),
# guide = guide_legend(reverse = TRUE,
# order = 1)
# ) +
# scale_x_continuous(breaks = seq(1980, 2020, 20)) +
# labs(title = "Residual from fit to monthly means (actual - predicted) | Global non-polar",
# subtitle = paste("Month:", .x$month)) +
# facet_wrap(
# name ~ .,
# scales = "free_y",
# labeller = labeller(name = x_axis_labels),
# strip.position = "left",
# ncol = 2
# ) +
# theme(
# strip.text.y.left = element_markdown(),
# strip.placement = "outside",
# strip.background.y = element_blank(),
# axis.title = element_blank(),
# legend.title = element_blank()
# )
# )
#
# pco2_product_biome_monthly_anomaly %>%
# filter(biome %in% key_biomes) %>%
# group_split(month) %>%
# head(1) %>%
# map(
# ~ ggplot(data = .x,
# aes(year, resid)) +
# geom_hline(yintercept = 0) +
# geom_path() +
# geom_point(
# data = . %>% filter(!between(year, 2023-1, 2023)),
# aes(fill = year),
# shape = 21
# ) +
# scale_fill_grayC() +
# new_scale_fill() +
# geom_point(
# data = . %>% filter(between(year, 2023-1, 2023)),
# aes(fill = as.factor(year)),
# shape = 21,
# size = 2
# ) +
# scale_fill_manual(
# values = c("orange", "red"),
# guide = guide_legend(reverse = TRUE,
# order = 1)
# ) +
# scale_x_continuous(breaks = seq(1980, 2020, 20)) +
# labs(title = "Residual from fit to monthly means (actual - predicted) | Selected biomes",
# subtitle = paste("Month:", .x$month)) +
# facet_grid(
# name ~ biome,
# scales = "free_y",
# labeller = labeller(name = x_axis_labels),
# switch = "y"
# ) +
# theme(
# strip.text.y.left = element_markdown(),
# strip.placement = "outside",
# strip.background.y = element_blank(),
# axis.title = element_blank(),
# legend.title = element_blank()
# )
# )
pco2_product_biome_monthly_anomaly %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_biome_monthly_anomaly.csv"
)
)
pco2_product_biome_monthly_detrended <-
full_join(pco2_product_biome_monthly,
pco2_product_biome_monthly_anomaly %>% select(-c(value, resid))) %>%
mutate(resid = value - fit)
pco2_product_biome_monthly_detrended %>%
filter(biome %in% "Global non-polar") %>%
ggplot(aes(month, resid, group = as.factor(year))) +
geom_path(data = . %>% filter(!between(year, 2023-1, 2023)),
aes(col = year)) +
scale_color_grayC() +
new_scale_color() +
geom_path(data = . %>% filter(between(year, 2023-1, 2023)),
aes(col = as.factor(year)),
linewidth = 1) +
scale_color_manual(values = c("orange", "red"),
guide = guide_legend(reverse = TRUE,
order = 1)) +
scale_x_continuous(breaks = seq(1, 12, 3), expand = c(0, 0)) +
labs(title = "Anomalies from predicted monthly mean | Global non-polar") +
facet_wrap(
name ~ .,
scales = "free_y",
labeller = labeller(name = x_axis_labels),
strip.position = "left",
ncol = 2
) +
theme(
strip.text.y.left = element_markdown(),
strip.placement = "outside",
strip.background.y = element_blank(),
axis.title.y = element_blank(),
legend.title = element_blank()
)
Version | Author | Date |
---|---|---|
e827817 | jens-daniel-mueller | 2024-09-09 |
f220529 | jens-daniel-mueller | 2024-08-22 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_biome_monthly_detrended %>%
filter(biome %in% key_biomes) %>%
ggplot(aes(month, resid, group = as.factor(year))) +
geom_path(data = . %>% filter(!between(year, 2023-1, 2023)),
aes(col = year)) +
scale_color_grayC() +
new_scale_color() +
geom_path(data = . %>% filter(between(year, 2023-1, 2023)),
aes(col = as.factor(year)),
linewidth = 1) +
scale_color_manual(values = c("orange", "red"),
guide = guide_legend(reverse = TRUE,
order = 1)) +
scale_x_continuous(breaks = seq(1, 12, 3), expand = c(0, 0)) +
labs(title = "Anomalies from predicted monthly mean | Selected biomes") +
facet_grid(
name ~ biome,
scales = "free_y",
labeller = labeller(name = x_axis_labels),
switch = "y"
) +
theme(
strip.text.y.left = element_markdown(),
strip.placement = "outside",
strip.background.y = element_blank(),
axis.title.y = element_blank(),
legend.title = element_blank()
)
Version | Author | Date |
---|---|---|
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_biome_monthly_detrended %>%
filter(biome %in% key_biomes) %>%
ggplot(aes(month, resid, group = as.factor(year))) +
geom_path(data = . %>% filter(!between(year, 2023-1, 2023)),
aes(col = year)) +
scale_color_grayC() +
new_scale_color() +
geom_path(data = . %>% filter(between(year, 2023-1, 2023)),
aes(col = as.factor(year)),
linewidth = 1) +
scale_color_manual(values = c("orange", "red"),
guide = guide_legend(reverse = TRUE,
order = 1)) +
scale_x_continuous(breaks = seq(1, 12, 3), expand = c(0, 0)) +
labs(title = "Anomalies from predicted monthly mean | Selected biomes") +
facet_grid(
name ~ biome,
scales = "free_y",
labeller = labeller(name = x_axis_labels),
switch = "y"
) +
theme(
strip.text.y.left = element_markdown(),
strip.placement = "outside",
strip.background.y = element_blank(),
axis.title.y = element_blank(),
legend.title = element_blank()
)
Version | Author | Date |
---|---|---|
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_biome_monthly_detrended %>%
filter(biome %in% key_biomes) %>%
group_split(biome) %>%
# head(1) %>%
map(
~ ggplot(data = .x,
aes(month, resid, group = as.factor(year))) +
geom_path(data = . %>% filter(!between(year, 2023-1, 2023)),
aes(col = year)) +
scale_color_grayC() +
new_scale_color() +
geom_path(
data = . %>% filter(between(year, 2023-1, 2023)),
aes(col = as.factor(year)),
linewidth = 1
) +
scale_color_manual(
values = c("orange", "red"),
guide = guide_legend(reverse = TRUE,
order = 1)
) +
scale_x_continuous(breaks = seq(1, 12, 3), expand = c(0, 0)) +
labs(title = paste("Anomalies from predicted monthly mean |", .x$biome)) +
facet_wrap(
name ~ .,
scales = "free_y",
labeller = labeller(name = x_axis_labels),
strip.position = "left",
ncol = 2
) +
theme(
strip.text.y.left = element_markdown(),
strip.placement = "outside",
strip.background.y = element_blank(),
axis.title.y = element_blank(),
legend.title = element_blank()
)
)
Version | Author | Date |
---|---|---|
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
Version | Author | Date |
---|---|---|
8b8904a | jens-daniel-mueller | 2024-06-26 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_biome_monthly_detrended %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_biome_monthly_detrended.csv"
)
)
The following plots aim to unravel the correlation between regionally integrated monthly flux anomalies and the corresponding anomalies of the means/integrals of each other variable.
Anomalies are first presented are first presented in absolute units. Due to the different flux magnitudes, we need to plot integrated fluxes separately for each region. Secondly, we normalize the monthly anomalies to the spread (expressed as standard deviation) of the residuals from the fit.
pco2_product_biome_annual_anomaly %>%
filter(biome == "Global non-polar") %>%
select(-c(value, fit)) %>%
pivot_wider(values_from = resid) %>%
pivot_longer(-c(year, biome, fgco2_int)) %>%
ggplot(aes(value, fgco2_int)) +
geom_hline(yintercept = 0) +
geom_point(data = . %>% filter(!between(year, 2023-1, 2023)),
aes(fill = year),
shape = 21) +
geom_smooth(
data = . %>% filter(!between(year, 2023-1, 2023)),
method = "lm",
se = FALSE,
fullrange = TRUE,
aes(col = paste("Regression fit\nexcl.", 2023))
) +
scale_color_grey() +
scale_fill_grayC()+
new_scale_fill() +
geom_point(data = . %>% filter(between(year, 2023-1, 2023)),
aes(fill = as.factor(year)),
shape = 21, size = 2) +
scale_fill_manual(values = c("orange", "red"),
guide = guide_legend(reverse = TRUE,
order = 1)) +
labs(title = "Global non-polar integrated fluxes",
y = labels_breaks("fgco2_int")$i_legend_title) +
facet_wrap(
~ name,
scales = "free_x",
labeller = labeller(name = x_axis_labels),
strip.position = "bottom",
ncol = 2
) +
theme(
strip.text.x.bottom = element_markdown(),
strip.placement = "outside",
strip.background.x = element_blank(),
axis.title.y = element_markdown(),
axis.title.x = element_blank(),
legend.title = element_blank()
)
Version | Author | Date |
---|---|---|
e827817 | jens-daniel-mueller | 2024-09-09 |
f220529 | jens-daniel-mueller | 2024-08-22 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_biome_monthly_detrended_anomaly <-
pco2_product_biome_monthly_detrended %>%
select(year, month, biome, name, resid) %>%
pivot_wider(names_from = name,
values_from = resid)
pco2_product_biome_monthly_detrended_anomaly %>%
filter(biome == "Global non-polar") %>%
pivot_longer(-c(year, month, biome, fgco2_int)) %>%
ggplot(aes(value, fgco2_int)) +
geom_hline(yintercept = 0) +
geom_point(data = . %>% filter(year != 2023),
aes(col = paste(min(year), max(year), sep = "-")),
alpha = 0.2) +
geom_smooth(
data = . %>% filter(year != 2023),
aes(col = paste(min(year), max(year), sep = "-")),
method = "lm",
se = FALSE,
fullrange = TRUE
) +
scale_color_grey(name = "") +
new_scale_color() +
geom_path(data = . %>% filter(year == 2023),
aes(col = as.factor(month), group = 1)) +
geom_point(data = . %>% filter(year == 2023),
aes(fill = as.factor(month)),
shape = 21,
size = 3) +
scale_color_scico_d(palette = "buda",
guide = guide_legend(reverse = TRUE,
order = 1),
name = paste("Month\nof", 2023)) +
scale_fill_scico_d(palette = "buda",
guide = guide_legend(reverse = TRUE,
order = 1),
name = paste("Month\nof", 2023)) +
labs(title = "Global non-polar integrated fluxes",
y = labels_breaks("fgco2_int")$i_legend_title) +
facet_wrap(
~ name,
scales = "free_x",
labeller = labeller(name = x_axis_labels),
strip.position = "bottom",
ncol = 2
) +
theme(
strip.text.x.bottom = element_markdown(),
strip.placement = "outside",
strip.background.x = element_blank(),
axis.title.y = element_markdown(),
axis.title.x = element_blank()
)
Version | Author | Date |
---|---|---|
e827817 | jens-daniel-mueller | 2024-09-09 |
f220529 | jens-daniel-mueller | 2024-08-22 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
be285dc | jens-daniel-mueller | 2024-05-21 |
51df30d | jens-daniel-mueller | 2024-05-15 |
909f6c8 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_biome_monthly_detrended_anomaly %>%
filter(!(biome %in% c(key_biomes, "Global non-polar"))) %>%
pivot_longer(-c(year, month, biome, fgco2_int)) %>%
filter(name %in% c("temperature", "chl", "dfco2", "kw_sol")) %>%
group_split(name) %>%
head(1) %>%
map(
~ ggplot(data = .x,
aes(value, fgco2_int)) +
geom_hline(yintercept = 0) +
geom_point(
data = . %>% filter(year != 2023),
aes(col = paste(min(year), max(year), sep = "-")),
alpha = 0.2
) +
geom_smooth(
data = . %>% filter(year != 2023),
aes(col = paste(min(year), max(year), sep = "-")),
method = "lm",
se = FALSE,
fullrange = TRUE
) +
scale_color_grey(name = "") +
new_scale_color() +
geom_path(data = . %>% filter(year == 2023),
aes(col = as.factor(month), group = 1)) +
geom_point(
data = . %>% filter(year == 2023),
aes(fill = as.factor(month)),
shape = 21,
size = 3
) +
scale_color_scico_d(
palette = "buda",
guide = guide_legend(reverse = TRUE,
order = 1),
name = paste("Month\nof", 2023)
) +
scale_fill_scico_d(
palette = "buda",
guide = guide_legend(reverse = TRUE,
order = 1),
name = paste("Month\nof", 2023)
) +
facet_wrap( ~ biome, ncol = 3, scales = "free") +
labs(
title = "Biome integrated fluxes",
y = labels_breaks("fgco2_int")$i_legend_title,
x = labels_breaks(.x %>% distinct(name))$i_legend_title
) +
theme(axis.title.x = element_markdown(),
axis.title.y = element_markdown())
)
Version | Author | Date |
---|---|---|
f220529 | jens-daniel-mueller | 2024-08-22 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
f8eeceb | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
pco2_product_biome_monthly_detrended_anomaly_spread <-
pco2_product_biome_monthly_detrended_anomaly %>%
pivot_longer(-c(month, biome, year)) %>%
filter(year != 2023) %>%
group_by(month, biome, name) %>%
summarise(spread = sd(value, na.rm = TRUE)) %>%
ungroup()
pco2_product_biome_monthly_detrended_anomaly_relative <-
full_join(
pco2_product_biome_monthly_detrended_anomaly_spread,
pco2_product_biome_monthly_detrended_anomaly %>%
pivot_longer(-c(month, biome, year))
)
pco2_product_biome_monthly_detrended_anomaly_relative <-
pco2_product_biome_monthly_detrended_anomaly_relative %>%
mutate(value = value / spread) %>%
select(-spread) %>%
pivot_wider() %>%
pivot_longer(-c(month, biome, year, fgco2_int))
pco2_product_biome_monthly_detrended_anomaly_relative %>%
filter(name %in% c("temperature", "chl", "dfco2", "kw_sol")) %>%
group_split(name) %>%
head(1) %>%
map(
~ ggplot(data = .x,
aes(value, fgco2_int)) +
geom_vline(xintercept = 0) +
geom_hline(yintercept = 0) +
geom_point(
data = . %>% filter(year != 2023),
aes(col = paste(min(year), max(year), sep = "-")),
alpha = 0.2
) +
geom_smooth(
data = . %>% filter(year != 2023),
aes(col = paste(min(year), max(year), sep = "-")),
method = "lm",
se = FALSE,
fullrange = TRUE
) +
scale_color_grey(name = "") +
new_scale_color() +
geom_path(data = . %>% filter(year == 2023),
aes(col = as.factor(month), group = 1)) +
geom_point(
data = . %>% filter(year == 2023),
aes(fill = as.factor(month)),
shape = 21,
size = 3
) +
scale_color_scico_d(
palette = "buda",
guide = guide_legend(reverse = TRUE,
order = 1),
name = paste("Month\nof", 2023)
) +
scale_fill_scico_d(
palette = "buda",
guide = guide_legend(reverse = TRUE,
order = 1),
name = paste("Month\nof", 2023)
) +
facet_wrap( ~ biome, ncol = 3) +
coord_fixed() +
labs(
title = "Biome integrated fluxes normalized to spread",
y = str_split_i(labels_breaks("fgco2_int")$i_legend_title, "<br>", i = 1),
x = str_split_i(labels_breaks(.x %>% distinct(name))$i_legend_title, "<br>", i = 1)
) +
theme(axis.title.x = element_markdown(),
axis.title.y = element_markdown())
)
Version | Author | Date |
---|---|---|
e827817 | jens-daniel-mueller | 2024-09-09 |
f220529 | jens-daniel-mueller | 2024-08-22 |
5634f7f | jens-daniel-mueller | 2024-06-26 |
67f79ca | jens-daniel-mueller | 2024-06-12 |
4de1802 | jens-daniel-mueller | 2024-06-12 |
bc2711d | jens-daniel-mueller | 2024-06-12 |
5c52cd2 | jens-daniel-mueller | 2024-06-12 |
e3748fc | jens-daniel-mueller | 2024-06-11 |
0a7394b | jens-daniel-mueller | 2024-06-11 |
54a9740 | jens-daniel-mueller | 2024-06-11 |
3a18397 | jens-daniel-mueller | 2024-06-11 |
a3743ec | jens-daniel-mueller | 2024-05-25 |
009791f | jens-daniel-mueller | 2024-05-14 |
3b5d16b | jens-daniel-mueller | 2024-05-13 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
79ef4f3 | jens-daniel-mueller | 2024-05-08 |
b0129aa | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
2321242 | jens-daniel-mueller | 2024-04-11 |
biome_mask <-
bind_rows(
biome_mask,
biome_mask %>%
filter(!str_detect(biome, "SO-SPSS|SO-ICE|Arctic")) %>%
mutate(biome = "Global non-polar")
)
pco2_product_biome_monthly_fCO2_decomposition <-
full_join(pco2_product_map_monthly_fCO2_decomposition,
biome_mask,
relationship = "many-to-many") %>%
group_by(year, month, biome, name) %>%
summarise(resid = mean(resid, na.rm = TRUE)) %>%
ungroup() %>%
drop_na()
pco2_product_biome_annual_fCO2_decomposition <-
pco2_product_biome_monthly_fCO2_decomposition %>%
group_by(year, biome, name) %>%
summarise(resid = mean(resid)) %>%
ungroup()
pco2_product_biome_monthly_fCO2_decomposition %>%
filter(biome %in% c("Global non-polar", key_biomes)) %>%
p_season(title = paste("Anomalies from predicted monthly mean"))
pco2_product_biome_monthly_flux_attribution <-
full_join(pco2_product_map_monthly_flux_attribution,
biome_mask,
relationship = "many-to-many") %>%
group_by(year, month, biome, name) %>%
summarise(resid = mean(resid, na.rm = TRUE)) %>%
ungroup() %>%
drop_na()
pco2_product_biome_monthly_flux_attribution_total <-
full_join(pco2_product_map_monthly_anomaly %>%
filter(name == "fgco2") %>%
mutate(name = "resid_fgco2"),
biome_mask,
relationship = "many-to-many") %>%
group_by(year, month, biome, name) %>%
summarise(resid = mean(resid, na.rm = TRUE)) %>%
ungroup() %>%
drop_na()
pco2_product_biome_monthly_flux_attribution <-
bind_rows(
pco2_product_biome_monthly_flux_attribution,
pco2_product_biome_monthly_flux_attribution_total
)
pco2_product_biome_annual_flux_attribution <-
pco2_product_biome_monthly_flux_attribution %>%
group_by(year, biome, name) %>%
summarise(resid = mean(resid)) %>%
ungroup()
pco2_product_biome_monthly_flux_attribution %>%
filter(year == 2023,
biome %in% c("Global non-polar", key_biomes)) %>%
ggplot() +
geom_hline(yintercept = 0) +
geom_path(
aes(month, resid)
) +
geom_point(
aes(month, resid),
shape = 21,
alpha = 0.5,
col = "grey30"
) +
scale_y_continuous(breaks = seq(-10,10,0.2)) +
scale_x_continuous(position = "top", breaks = seq(1,12,3)) +
labs(y = labels_breaks(unique("fgco2"))$i_legend_title) +
facet_grid(biome ~ name,
labeller = labeller(name = x_axis_labels),
scales = "free_y",
space = "free_y",
switch = "x") +
theme(
legend.title = element_blank(),
axis.title.y = element_markdown(),
strip.text.x.bottom = element_markdown(),
strip.placement = "outside",
strip.background.x = element_blank(),
legend.position = "top"
)
pco2_product_biome_monthly_flux_attribution %>%
filter(biome %in% c("Global non-polar", key_biomes)) %>%
p_season(title = paste("Anomalies from predicted monthly mean"))
pco2_product_biome_annual_flux_attribution <-
full_join(
pco2_product_biome_annual_flux_attribution %>%
filter(year == 2023) %>%
select(-year),
pco2_product_biome_annual_flux_attribution %>%
filter(year != 2023) %>%
group_by(biome, name) %>%
summarise(resid_mean = mean(abs(resid))) %>%
ungroup()
)
# pco2_product_biome_annual_flux_attribution %>%
# filter(biome %in% c("Global non-polar", key_biomes)) %>%
# mutate(product == "pco2 product") %>%
# group_split(product) %>%
# # head(1) %>%
# map(
# ~ ggplot(data = .x) +
# geom_col(aes("x", resid),
# position = "dodge2") +
# geom_col(
# aes(
# "x",
# resid_mean * sign(resid),
# col = paste0("Mean\nexcl.",2023)
# ),
# position = "dodge2",
# fill = "transparent"
# ) +
# labs(y = labels_breaks(unique("fgco2"))$i_legend_title,
# title = .x$biome) +
# facet_grid(
# biome~name,
# labeller = labeller(name = x_axis_labels),
# switch = "x"
# ) +
# scale_color_grey() +
# theme(
# legend.title = element_blank(),
# axis.text.x = element_blank(),
# axis.ticks.x = element_blank(),
# axis.title.x = element_blank(),
# axis.title.y = element_markdown(),
# strip.text.x.bottom = element_markdown(),
# strip.placement = "outside",
# strip.background.x = element_blank(),
# legend.position = "top"
# )
# )
pco2_product_biome_annual_flux_attribution %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_biome_annual_flux_attribution.csv"
)
)
pco2_product_biome_monthly_flux_attribution %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_biome_monthly_flux_attribution.csv"
)
)
pco2_product_biome_annual_fCO2_decomposition %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_biome_annual_fCO2_decomposition.csv"
)
)
pco2_product_biome_monthly_fCO2_decomposition %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_biome_monthly_fCO2_decomposition.csv"
)
)
rm(
pco2_product_biome_annual_flux_attribution,
pco2_product_biome_monthly_flux_attribution,
pco2_product_biome_annual_fCO2_decomposition,
pco2_product_biome_monthly_fCO2_decomposition
)
gc()
The following analysis is available for GOBMs only.
pco2_product_zonal_mean_annual <- pco2_product_zonal_mean %>%
pivot_longer(-c(region, depth, lat, time, year, month)) %>%
group_by(region, lat, depth, year, name) %>%
summarise(value = mean(value)) %>%
ungroup() %>%
drop_na() %>%
mutate(region = str_to_title(region))
pco2_product_zonal_mean_annual_anomaly <-
pco2_product_zonal_mean_annual %>%
anomaly_determination(region, lat, depth)
pco2_product_zonal_mean_annual_anomaly %>%
filter(year == 2023) %>%
group_split(name) %>%
# head(3) %>%
map(
~ ggplot(data = .x) +
geom_contour_filled(aes(lat, depth, z = resid)) +
scale_fill_discrete_divergingx(name = labels_breaks(.x %>% distinct(name))$i_legend_title) +
guides(fill = guide_colorsteps(
barheight = unit(8, "cm"),
show.limits = TRUE
)) +
scale_y_continuous(trans = trans_reverser("sqrt"),
breaks = c(50,100,200,400)) +
scale_x_continuous(breaks = seq(-100, 100, 20)) +
coord_cartesian(expand = 0) +
facet_wrap( ~ region, ncol = 1) +
labs(y = "Depth (m)") +
theme(legend.title = element_markdown())
)
pco2_product_zonal_mean_annual_anomaly %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_zonal_mean_sections_annual.csv"
)
)
The following analysis is available for GOBMs only.
pco2_product_profiles_annual <- pco2_product_profiles %>%
pivot_longer(-c(biome, depth, time, year, month)) %>%
group_by(biome, depth, year, name) %>%
summarise(value = mean(value)) %>%
ungroup() %>%
drop_na()
pco2_product_profiles_annual_anomaly <-
pco2_product_profiles_annual %>%
anomaly_determination(biome, depth)
pco2_product_profiles_annual_anomaly %>%
group_split(name) %>%
# head(1) %>%
map(
~ ggplot(data = .x) +
geom_path(aes(resid, depth, group = year), col = "grey30", alpha = 0.5) +
geom_path(data = .x %>% filter(year == 2023),
aes(resid, depth, col = as.factor(year)),
linewidth = 1) +
scale_y_continuous(trans = trans_reverser("sqrt"),
breaks = c(50,100,200,400)) +
facet_wrap( ~ biome) +
labs(y = "Depth (m)",
x = labels_breaks(.x %>% distinct(name))$i_legend_title) +
theme(legend.title = element_blank(),
axis.title.x = element_markdown())
)
pco2_product_profiles_annual_anomaly %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_profiles_annual.csv"
)
)
pco2_product_profiles_monthly <- pco2_product_profiles %>%
pivot_longer(-c(biome, depth, time, year, month)) %>%
group_by(biome, depth, year, month, name) %>%
summarise(value = mean(value)) %>%
ungroup() %>%
drop_na()
pco2_product_profiles_monthly_anomaly <-
pco2_product_profiles_monthly %>%
anomaly_determination(biome, depth, month)
pco2_product_profiles_monthly_anomaly %>%
filter(year == 2023) %>%
group_split(name) %>%
# head(1) %>%
map(
~ ggplot(data = .x) +
geom_vline(xintercept = 0) +
geom_path(aes(resid, depth, col = as.factor(month)),
linewidth = 1) +
scale_color_scico_d(palette = "hawaii") +
scale_y_continuous(trans = trans_reverser("sqrt"),
breaks = c(50, 100, 200, 400)) +
facet_wrap(~ biome,
scales = "free_x") +
labs(y = "Depth (m)",
x = labels_breaks(.x %>% distinct(name))$i_legend_title) +
theme(legend.title = element_blank(),
axis.title.x = element_markdown())
)
pco2_product_profiles_monthly_anomaly %>%
write_csv(
paste0(
"../data/",
"SOM-FFN",
"_",
"2023",
"_profiles_monthly.csv"
)
)
sessionInfo()
R version 4.2.2 (2022-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: openSUSE Leap 15.5
Matrix products: default
BLAS: /usr/local/R-4.2.2/lib64/R/lib/libRblas.so
LAPACK: /usr/local/R-4.2.2/lib64/R/lib/libRlapack.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] scales_1.2.1 cmocean_0.3-1 ggtext_0.1.2
[4] broom_1.0.5 khroma_1.9.0 ggnewscale_0.4.8
[7] seacarb_3.3.1 SolveSAPHE_2.1.0 oce_1.7-10
[10] gsw_1.1-1 lubridate_1.9.0 timechange_0.1.1
[13] stars_0.6-0 abind_1.4-5 terra_1.7-65
[16] sf_1.0-9 rnaturalearth_0.1.0 geomtextpath_0.1.1
[19] colorspace_2.0-3 marelac_2.1.10 shape_1.4.6
[22] ggforce_0.4.1 metR_0.13.0 scico_1.3.1
[25] patchwork_1.1.2 collapse_1.8.9 forcats_0.5.2
[28] stringr_1.5.0 dplyr_1.1.3 purrr_1.0.2
[31] readr_2.1.3 tidyr_1.3.0 tibble_3.2.1
[34] ggplot2_3.4.4 tidyverse_1.3.2 workflowr_1.7.0
loaded via a namespace (and not attached):
[1] readxl_1.4.1 backports_1.4.1 systemfonts_1.0.4
[4] lwgeom_0.2-10 sp_1.5-1 splines_4.2.2
[7] digest_0.6.30 htmltools_0.5.3 ncmeta_0.3.5
[10] fansi_1.0.3 magrittr_2.0.3 checkmate_2.1.0
[13] memoise_2.0.1 googlesheets4_1.0.1 tzdb_0.3.0
[16] modelr_0.1.10 vroom_1.6.0 rvest_1.0.3
[19] textshaping_0.3.6 haven_2.5.1 xfun_0.35
[22] callr_3.7.3 crayon_1.5.2 jsonlite_1.8.3
[25] glue_1.6.2 polyclip_1.10-4 gtable_0.3.1
[28] gargle_1.2.1 DBI_1.1.3 Rcpp_1.0.11
[31] viridisLite_0.4.1 gridtext_0.1.5 units_0.8-0
[34] bit_4.0.5 proxy_0.4-27 httr_1.4.4
[37] RColorBrewer_1.1-3 ellipsis_0.3.2 pkgconfig_2.0.3
[40] farver_2.1.1 sass_0.4.4 dbplyr_2.2.1
[43] utf8_1.2.2 here_1.0.1 tidyselect_1.2.0
[46] labeling_0.4.2 rlang_1.1.1 later_1.3.0
[49] munsell_0.5.0 cellranger_1.1.0 tools_4.2.2
[52] cachem_1.0.6 cli_3.6.1 generics_0.1.3
[55] evaluate_0.18 fastmap_1.1.0 yaml_2.3.6
[58] processx_3.8.0 knitr_1.41 bit64_4.0.5
[61] fs_1.5.2 RNetCDF_2.6-1 nlme_3.1-160
[64] whisker_0.4 xml2_1.3.3 compiler_4.2.2
[67] rstudioapi_0.15.0 e1071_1.7-12 reprex_2.0.2
[70] tweenr_2.0.2 bslib_0.4.1 stringi_1.7.8
[73] highr_0.9 ps_1.7.2 lattice_0.20-45
[76] Matrix_1.5-3 classInt_0.4-8 commonmark_1.8.1
[79] markdown_1.4 vctrs_0.6.4 pillar_1.9.0
[82] lifecycle_1.0.3 jquerylib_0.1.4 data.table_1.14.6
[85] httpuv_1.6.6 R6_2.5.1 promises_1.2.0.1
[88] KernSmooth_2.23-20 codetools_0.2-18 MASS_7.3-58.1
[91] assertthat_0.2.1 rprojroot_2.0.3 withr_2.5.0
[94] mgcv_1.8-41 parallel_4.2.2 hms_1.1.2
[97] grid_4.2.2 rnaturalearthdata_0.1.0 class_7.3-20
[100] rmarkdown_2.18 googledrive_2.0.0 git2r_0.30.1
[103] getPass_0.2-2