Last updated: 2024-05-21
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 5af03d1. 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/
Unstaged changes:
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/pco2_product_synopsis_2023.Rmd
) and HTML
(docs/pco2_product_synopsis_2023.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 | 5af03d1 | jens-daniel-mueller | 2024-05-17 | Build site. |
html | a29d870 | jens-daniel-mueller | 2024-05-16 | Build site. |
html | dbc1fc6 | jens-daniel-mueller | 2024-05-16 | Build site. |
html | aea0b99 | jens-daniel-mueller | 2024-05-16 | Build site. |
html | 3310cf6 | jens-daniel-mueller | 2024-05-16 | Build site. |
html | fcd728c | jens-daniel-mueller | 2024-05-16 | Build site. |
html | 960912c | jens-daniel-mueller | 2024-05-16 | Build site. |
html | b7d0689 | jens-daniel-mueller | 2024-05-15 | Build site. |
html | 00ad9d5 | jens-daniel-mueller | 2024-05-15 | Build site. |
html | 47f8868 | jens-daniel-mueller | 2024-05-15 | Build site. |
html | 589243f | jens-daniel-mueller | 2024-05-15 | Build site. |
html | 1e4c153 | jens-daniel-mueller | 2024-05-14 | Build site. |
html | 009791f | jens-daniel-mueller | 2024-05-14 | Build site. |
html | 8c96de4 | jens-daniel-mueller | 2024-05-08 | Build site. |
html | 3fea035 | jens-daniel-mueller | 2024-05-08 | Build site. |
html | 4b81eaf | jens-daniel-mueller | 2024-05-07 | Build site. |
html | 60abdac | jens-daniel-mueller | 2024-04-23 | Build site. |
html | e44a62b | jens-daniel-mueller | 2024-04-23 | Build site. |
html | 7f9c687 | jens-daniel-mueller | 2024-04-23 | Build site. |
html | 1ff6eb0 | jens-daniel-mueller | 2024-04-22 | Build site. |
html | 9ecd92e | jens-daniel-mueller | 2024-04-22 | Build site. |
html | 231f7cd | jens-daniel-mueller | 2024-04-17 | Build site. |
html | f6e9707 | jens-daniel-mueller | 2024-04-17 | Build site. |
html | ce4e2a6 | jens-daniel-mueller | 2024-04-17 | Build site. |
html | a5911f0 | jens-daniel-mueller | 2024-04-17 | Build site. |
html | 6709afa | jens-daniel-mueller | 2024-04-12 | Build site. |
html | 58e3680 | jens-daniel-mueller | 2024-04-11 | Build site. |
html | 238d229 | 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 | 2c6f421 | jens-daniel-mueller | 2024-04-11 | Build site. |
html | 37ccea4 | jens-daniel-mueller | 2024-04-08 | Build site. |
html | 19f40c9 | jens-daniel-mueller | 2024-04-05 | Build site. |
Rmd | 2336de2 | jens-daniel-mueller | 2024-04-05 | ensemble mean estimates added |
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. |
html | 40cb158 | jens-daniel-mueller | 2024-04-03 | Build site. |
html | 7bb6113 | jens-daniel-mueller | 2024-04-03 | Build site. |
Rmd | 7be0147 | jens-daniel-mueller | 2024-04-03 | trend maps included |
html | 27b48a1 | jens-daniel-mueller | 2024-04-03 | Build site. |
html | a83c8fc | jens-daniel-mueller | 2024-04-03 | Build site. |
Rmd | 53c89bd | jens-daniel-mueller | 2024-04-03 | rebuild entire website incl 2022 anomalies |
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")
pCO2_product_synopsis <-
knitr::knit_expand(
file = here::here("analysis/child/pCO2_product_synopsis.Rmd"),
year_anom = 2023
)
files <- list.files(here::here("data/"),
pattern = paste0(2023,"_anomaly_map_annual.csv"),
full.names = TRUE)
pco2_product_coarse_annual_regression <-
read_csv(files,
id = "product")
pco2_product_coarse_annual_regression <-
pco2_product_coarse_annual_regression %>%
mutate(product = str_extract(product, "OceanSODA|SOM_FFN|CMEMS|NRT_fco2residual|ETHZ_CESM|FESOM-REcoM"))
files <- list.files(here::here("data/"),
pattern = paste0(2023,"_anomaly_map_monthly.csv"),
full.names = TRUE)
pco2_product_coarse_monthly_regression <-
read_csv(files,
id = "product")
pco2_product_coarse_monthly_regression <-
pco2_product_coarse_monthly_regression %>%
mutate(product = str_extract(product, "OceanSODA|SOM_FFN|CMEMS|NRT_fco2residual|ETHZ_CESM|FESOM-REcoM"))
files <- list.files(here::here("data/"),
pattern = paste0(2023,"_anomaly_hovmoeller_monthly.csv"),
full.names = TRUE)
pco2_product_hovmoeller_monthly_regression <-
read_csv(files,
id = "product")
pco2_product_hovmoeller_monthly_regression <-
pco2_product_hovmoeller_monthly_regression %>%
mutate(product = str_extract(product, "OceanSODA|SOM_FFN|CMEMS|NRT_fco2residual|ETHZ_CESM|FESOM-REcoM"))
files <- list.files(here::here("data/"),
pattern = paste0(2023,"_biome_annual_regression.csv"),
full.names = TRUE)
pco2_product_annual_regression <-
read_csv(files,
id = "product")
pco2_product_annual_regression <-
pco2_product_annual_regression %>%
mutate(product = str_extract(product, "OceanSODA|SOM_FFN|CMEMS|NRT_fco2residual|ETHZ_CESM|FESOM-REcoM"))
files <- list.files(here::here("data/"),
pattern = paste0(2023,"_biome_annual_detrended.csv"),
full.names = TRUE)
pco2_product_annual_detrended <-
read_csv(files,
id = "product")
pco2_product_annual_detrended <-
pco2_product_annual_detrended %>%
mutate(product = str_extract(product, "OceanSODA|SOM_FFN|CMEMS|NRT_fco2residual|ETHZ_CESM|FESOM-REcoM"))
files <- list.files(here::here("data/"),
pattern = paste0(2023,"_biome_monthly_regression.csv"),
full.names = TRUE)
pco2_product_monthly_regression <-
read_csv(files,
id = "product")
pco2_product_monthly_regression <-
pco2_product_monthly_regression %>%
mutate(product = str_extract(product, "OceanSODA|SOM_FFN|CMEMS|NRT_fco2residual|ETHZ_CESM|FESOM-REcoM"))
files <- list.files(here::here("data/"),
pattern = paste0(2023,"_biome_monthly_detrended.csv"),
full.names = TRUE)
pco2_product_monthly_detrended <-
read_csv(files,
id = "product")
pco2_product_monthly_detrended <-
pco2_product_monthly_detrended %>%
mutate(product = str_extract(product, "OceanSODA|SOM_FFN|CMEMS|NRT_fco2residual|ETHZ_CESM|FESOM-REcoM"))
map <-
read_rds(here::here("data/map.rds"))
key_biomes <-
read_rds(here::here("data/key_biomes.rds"))
super_biomes <-
read_rds(here::here("data/super_biomes.rds"))
biome_mask <-
read_rds(here::here("data/biome_mask.rds"))
biome_mask <-
bind_rows(
biome_mask,
biome_mask %>% mutate(biome = "Global")
)
name_core <- c("fgco2", "fgco2_int", "fgco2_hov",
"sfco2", "atm_fco2", "dfco2",
"kw_sol", "temperature")
# pco2_product_annual_regression %>%
# distinct(product,name) %>%
# print(n=50)
pco2_product_coarse_annual_regression <-
pco2_product_coarse_annual_regression %>%
mutate(name = factor(name, levels = name_core)) %>%
filter(!is.na(name))
pco2_product_coarse_monthly_regression <-
pco2_product_coarse_monthly_regression %>%
mutate(name = factor(name, levels = name_core)) %>%
filter(!is.na(name))
pco2_product_hovmoeller_monthly_regression <-
pco2_product_hovmoeller_monthly_regression %>%
mutate(name = factor(name, levels = name_core)) %>%
filter(!is.na(name))
pco2_product_annual_detrended <- pco2_product_annual_detrended %>%
mutate(name = factor(name, levels = name_core)) %>%
filter(!is.na(name))
pco2_product_annual_regression <- pco2_product_annual_regression %>%
mutate(name = factor(name, levels = name_core)) %>%
filter(!is.na(name))
pco2_product_monthly_detrended <- pco2_product_monthly_detrended %>%
mutate(name = factor(name, levels = name_core)) %>%
filter(!is.na(name))
pco2_product_monthly_regression <- pco2_product_monthly_regression %>%
mutate(name = factor(name, levels = name_core)) %>%
filter(!is.na(name))
pco2_product_list <- c(#"CMEMS",
"NRT_fco2residual",
"OceanSODA",
"SOM_FFN")
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 == "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 == "temperature") {
i_legend_title <- "SST<br>(°C)"
}
if (i_name == "salinity") {
i_legend_title <- "SSS"
}
if (i_name == "chl") {
i_legend_title <- "lg(Chl-a)<br>(lg(mg m<sup>-3</sup>))"
}
if (i_name == "mld") {
i_legend_title <- "lg(MLD)<br>(lg(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,
"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,
"temperature" = labels_breaks("temperature")$i_legend_title,
"salinity" = labels_breaks("salinity")$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
)
p_season <- function(df, dim_row = "name", dim_col = "product", title, var = "resid") {
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 = c("red"),
guide = guide_legend(order = 1)
) +
scale_x_continuous(breaks = seq(1, 12, 3), expand = c(0, 0)) +
labs(title = title,
x = "Month")
if (!(is.null(dim_row) & is.null(dim_col))) {
p <- p +
facet_grid(
as.formula(paste(dim_row, "~", dim_col)),
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()
)
}
p
}
fco2_decomposition <- function(df, ...) {
group_by <- quos(...)
# group_by <- quos(lon, lat, month)
# group_by <- quos(biome, year, month)
pco2_product_decomposition <-
df %>%
filter(name %in% c("temperature", "sfco2"))
pco2_product_decomposition <-
inner_join(
pco2_product_decomposition %>%
filter(name == "temperature") %>%
select(-c(value, fit)) %>%
pivot_wider(values_from = resid),
pco2_product_decomposition %>%
filter(name == "sfco2") %>%
select(-c(value, resid)) %>%
pivot_wider(values_from = fit)
)
pco2_product_decomposition <-
pco2_product_decomposition %>%
mutate(sfco2_therm = (sfco2 * exp(0.0423 * temperature)) - sfco2)
pco2_product_decomposition <-
inner_join(
pco2_product_decomposition,
df %>%
filter(name %in% c("sfco2")) %>%
select(-c(value, fit, name)) %>%
rename(sfco2_total = resid)
)
pco2_product_decomposition <-
pco2_product_decomposition %>%
mutate(sfco2_nontherm = sfco2_total - sfco2_therm)
pco2_product_decomposition <-
pco2_product_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"),
product != "CMEMS")
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(product, !!!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 anomalies of each variable in 2023 as provided through the pCO2 product. Anomalies are determined based on the predicted value of a linear regression model fit to the available 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.
bivariate_map <-
pco2_product_coarse_annual_regression %>%
filter(year == 2023,
name %in% c("fgco2", "temperature")) %>%
select(product, name, lon, lat, resid) %>%
pivot_wider(names_from = name,
values_from = resid) %>%
drop_na()
map +
geom_tile(data = bivariate_map,
aes(lon, lat, fill = temperature)) +
scale_fill_continuous_divergingx(palette = "RdBu", rev = TRUE) +
facet_wrap(~ product, ncol = 2)
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
6709afa | jens-daniel-mueller | 2024-04-12 |
map +
geom_tile(data = bivariate_map,
aes(lon, lat, fill = fgco2)) +
scale_fill_continuous_divergingx(palette = "RdBu", rev = TRUE) +
facet_wrap(~ product, ncol = 2)
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
6709afa | jens-daniel-mueller | 2024-04-12 |
dim_set <- 4
bivariate_map <-
bi_class(
bivariate_map,
x = temperature,
y = fgco2,
dim = dim_set,
style = "quantile"
)
bi_breaks <-
bi_class_breaks(
bivariate_map,
x = temperature,
y = fgco2,
dim = dim_set,
style = "quantile",
dig_lab = 1
)
map +
geom_tile(data = bivariate_map,
aes(lon, lat, fill = bi_class)) +
bi_scale_fill(pal = "DkViolet2", dim = dim_set) +
theme(legend.position = "none") +
facet_wrap(~ product, ncol = 2)
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
7f9c687 | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
6709afa | jens-daniel-mueller | 2024-04-12 |
bi_legend(
pal = "DkViolet2",
xlab = labels_breaks("temperature")$i_legend_title,
ylab = labels_breaks("fgco2")$i_legend_title,
dim = dim_set,
pad_width = 2,
breaks = bi_breaks,
arrows = FALSE
) +
theme(
axis.title.x = element_markdown(),
axis.title.y = element_markdown(),
axis.ticks = element_blank(),
axis.text = element_text(size = 10)
)
# cowplot::plot_grid(
# bi_map, bi_legend,
# rel_heights = c(5, 3),
# ncol = 1
# )
pco2_product_coarse_annual_regression %>%
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_continuous_divergingx(
palette = "RdBu",
rev = TRUE,
name = labels_breaks(.x %>% distinct(name)),
limits = c(quantile(.x$resid, .01), quantile(.x$resid, .99)),
oob = squish
)+
theme(legend.title = element_markdown()) +
facet_wrap(~ product, ncol = 2)
)
[[1]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[2]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
a29d870 | jens-daniel-mueller | 2024-05-16 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
e44a62b | jens-daniel-mueller | 2024-04-23 |
6709afa | jens-daniel-mueller | 2024-04-12 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[3]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
a29d870 | jens-daniel-mueller | 2024-05-16 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
e44a62b | jens-daniel-mueller | 2024-04-23 |
6709afa | jens-daniel-mueller | 2024-04-12 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[4]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
a29d870 | jens-daniel-mueller | 2024-05-16 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
e44a62b | jens-daniel-mueller | 2024-04-23 |
6709afa | jens-daniel-mueller | 2024-04-12 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[5]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
a29d870 | jens-daniel-mueller | 2024-05-16 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
e44a62b | jens-daniel-mueller | 2024-04-23 |
6709afa | jens-daniel-mueller | 2024-04-12 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[6]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
a29d870 | jens-daniel-mueller | 2024-05-16 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
60abdac | jens-daniel-mueller | 2024-04-23 |
e44a62b | jens-daniel-mueller | 2024-04-23 |
6709afa | jens-daniel-mueller | 2024-04-12 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
pco2_product_coarse_annual_regression_ensemble <-
pco2_product_coarse_annual_regression %>%
filter(year == 2023,
product %in% pco2_product_list) %>%
group_by(name, lon, lat) %>%
summarize(
resid_sd = sd(resid),
resid_range = max(resid) - min(resid),
resid_mean = mean(resid),
n = n()
) %>%
ungroup() %>%
filter(n == length(pco2_product_list)) %>%
select(-n)
pco2_product_coarse_annual_regression_ensemble %>%
mutate(product = "Ensemble mean") %>%
group_split(name) %>%
# head(1) %>%
map(
~ map +
geom_tile(data = .x,
aes(lon, lat, fill = resid_mean)) +
geom_point(data = .x %>% filter(abs(resid_mean) < resid_sd),
aes(lon, lat, shape = "Ensemble mean\n< StDev")) +
labs(title = paste(2023, "anomaly")) +
scale_fill_continuous_divergingx(
palette = "RdBu",
rev = TRUE,
name = labels_breaks(.x %>% distinct(name)),
limits = c(quantile(.x$resid_mean, .01), quantile(.x$resid_mean, .99)),
oob = squish
)+
scale_shape_manual(values = 4, name = "") +
theme(legend.title = element_markdown()) +
facet_wrap(~ product, ncol = 2)
)
[[1]]
[[2]]
[[3]]
[[4]]
[[5]]
[[6]]
pco2_product_coarse_annual_regression_ensemble <-
left_join(
pco2_product_coarse_annual_regression_ensemble,
pco2_product_coarse_annual_regression %>%
filter(year == 2023,
product %in% pco2_product_list)
) %>%
mutate(`Anomaly offset` = resid - resid_mean) %>%
select(name, lon, lat, product, `Anomaly offset`)
pco2_product_coarse_annual_regression_ensemble_baseline <-
pco2_product_coarse_annual_regression %>%
filter(year == 2023,
product %in% pco2_product_list) %>%
group_by(name, lon, lat) %>%
summarize(
fit_mean = mean(fit),
n = n()
) %>%
ungroup() %>%
filter(n == length(pco2_product_list)) %>%
select(-n)
pco2_product_coarse_annual_regression_ensemble_baseline <-
left_join(
pco2_product_coarse_annual_regression_ensemble_baseline,
pco2_product_coarse_annual_regression %>%
filter(year == 2023,
product %in% pco2_product_list)
) %>%
mutate(`Baseline offset` = fit - fit_mean) %>%
select(name, lon, lat, product, `Baseline offset`)
full_join(
pco2_product_coarse_annual_regression_ensemble,
pco2_product_coarse_annual_regression_ensemble_baseline
) %>%
pivot_longer(contains("offset"),
names_to = "offset") %>%
group_split(name) %>%
# head(1) %>%
map(
~ map +
geom_tile(data = .x,
aes(lon, lat, fill = value)) +
labs(title = paste(2023, "offset from ensemble mean")) +
scale_fill_continuous_divergingx(
palette = "RdBu",
rev = TRUE,
name = labels_breaks(.x %>% distinct(name)),
limits = c(quantile(.x$value, .01), quantile(.x$value, .99)),
oob = squish) +
theme(legend.title = element_markdown()) +
facet_grid(product ~ offset)
)
[[1]]
[[2]]
[[3]]
[[4]]
[[5]]
[[6]]
pco2_product_coarse_monthly_regression %>%
filter(name %in% name_core) %>%
group_split(name) %>%
# head(1) %>%
map(
~ map +
geom_tile(data = .x,
aes(lon, lat, fill = resid)) +
labs(title = paste(2023, "anomaly")) +
scale_fill_continuous_divergingx(
palette = "RdBu",
rev = TRUE,
name = labels_breaks(.x %>% distinct(name)),
limits = c(quantile(.x$resid, .01), quantile(.x$resid, .99)),
oob = squish
)+
theme(legend.title = element_markdown()) +
facet_grid(month ~ product) +
theme(legend.position = "bottom")
)
[[1]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[2]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
a29d870 | jens-daniel-mueller | 2024-05-16 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[3]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[4]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
a29d870 | jens-daniel-mueller | 2024-05-16 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[5]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[6]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
60abdac | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
pco2_product_coarse_monthly_fCO2_decomposition <-
fco2_decomposition(pco2_product_coarse_monthly_regression,
lon, lat, month)
pco2_product_coarse_monthly_fCO2_decomposition %>%
group_split(product) %>%
# head(1) %>%
map(
~ map +
geom_tile(data = .x,
aes(lon, lat, fill = resid)) +
labs(title = paste(2023, "thermal vs non-thermal fCO2 anomaly"),
subtitle = .x$product) +
scale_fill_continuous_divergingx(
palette = "RdBu",
rev = TRUE,
name = labels_breaks("sfco2"),
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)
)
)
[[1]]
[[2]]
[[3]]
[[4]]
[[5]]
[[6]]
pco2_product_coarse_monthly_fCO2_decomposition %>%
filter(product %in% pco2_product_list) %>%
group_by(name, lon, lat, month) %>%
summarize(
resid_sd = sd(resid),
resid_mean = mean(resid),
n = n()
) %>%
ungroup() %>%
filter(n == length(pco2_product_list)) %>%
select(-n) %>%
mutate(product = "Ensemble mean") %>%
group_split(product) %>%
# head(1) %>%
map(
~ map +
geom_tile(data = .x,
aes(lon, lat, fill = resid_mean)) +
geom_point(data = .x %>% filter(abs(resid_mean) < resid_sd),
aes(lon, lat, shape = "Ensemble mean\n< StDev")) +
labs(title = paste(2023,"thermal vs non-thermal anomaly"),
subtitle = .x$product) +
scale_fill_continuous_divergingx(
palette = "RdBu",
rev = TRUE,
name = labels_breaks("sfco2"),
limits = c(quantile(.x$resid_mean, .01), quantile(.x$resid_mean, .99)),
oob = squish
)+
scale_shape_manual(values = 46, name = "") +
theme(legend.title = element_markdown(),
legend.position = "bottom") +
facet_grid(
month ~ name,
labeller = labeller(name = x_axis_labels)
)
)
[[1]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
pco2_product_coarse_annual_fCO2_decomposition <-
pco2_product_coarse_monthly_fCO2_decomposition %>%
group_by(product, lat, lon, name) %>%
summarise(resid = mean(resid, na.rm = TRUE)) %>%
ungroup()
map +
geom_tile(data = pco2_product_coarse_annual_fCO2_decomposition,
aes(lon, lat, fill = resid)) +
scale_fill_continuous_divergingx(
palette = "RdBu",
rev = TRUE,
name = labels_breaks("sfco2"),
limits = c(quantile(pco2_product_coarse_annual_fCO2_decomposition$resid, .01),
quantile(pco2_product_coarse_annual_fCO2_decomposition$resid, .99)),
oob = squish
)+
labs(title = paste(2023, "annual mean fCO2 anomaly decomposition")) +
theme(legend.title = element_markdown(),
legend.position = "bottom") +
facet_grid(product ~ name,
labeller = labeller(name = x_axis_labels)) +
theme(strip.text.x.top = element_markdown())
pco2_product_coarse_annual_fCO2_decomposition %>%
filter(product %in% pco2_product_list) %>%
group_by(name, lon, lat) %>%
summarize(
resid_sd = sd(resid),
resid_mean = mean(resid),
n = n()
) %>%
ungroup() %>%
filter(n == length(pco2_product_list)) %>%
select(-n) %>%
mutate(product = "Ensemble mean") %>%
group_split(product) %>%
# head(1) %>%
map(
~ map +
geom_tile(data = .x,
aes(lon, lat, fill = resid_mean)) +
geom_point(data = .x %>% filter(abs(resid_mean) < resid_sd),
aes(lon, lat, shape = "Ensemble mean\n< StDev"))+
labs(title = paste(2023, "fCO2 anomaly decomposition"),
subtitle = .x$product) +
scale_fill_continuous_divergingx(
palette = "RdBu",
rev = TRUE,
name = labels_breaks("sfco2"),
limits = c(quantile(.x$resid_mean, .01), quantile(.x$resid_mean, .99)),
oob = squish
) +
scale_shape_manual(values = 46, name = "")+
theme(legend.title = element_markdown(),
legend.position = "bottom") +
facet_wrap(
~ name,
labeller = labeller(name = x_axis_labels),
ncol = 1
) +
theme(strip.text.x.top = element_markdown())
)
[[1]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
pco2_product_coarse_monthly_flux_attribution <-
flux_attribution(pco2_product_coarse_monthly_regression,
lon, lat, month)
pco2_product_coarse_monthly_flux_attribution %>%
drop_na() %>%
group_split(product) %>%
# head(1) %>%
map(
~ map +
geom_tile(data = .x,
aes(lon, lat, fill = resid)) +
labs(title = paste(2023, "monthly flux anomaly decomposition"),
subtitle = .x$product) +
scale_fill_continuous_divergingx(
palette = "RdBu",
rev = TRUE,
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)
) +
theme(
strip.text.x.top = element_markdown()
)
)
[[1]]
[[2]]
[[3]]
[[4]]
[[5]]
pco2_product_coarse_monthly_flux_attribution %>%
drop_na() %>%
filter(product %in% pco2_product_list) %>%
group_by(name, lon, lat, month) %>%
summarize(
resid_sd = sd(resid),
resid_mean = mean(resid),
n = n()
) %>%
ungroup() %>%
filter(n == length(pco2_product_list)) %>%
select(-n) %>%
mutate(product = "Ensemble mean") %>%
drop_na() %>%
group_split(product) %>%
# head(1) %>%
map(
~ map +
geom_tile(data = .x,
aes(lon, lat, fill = resid_mean)) +
geom_point(data = .x %>% filter(abs(resid_mean) < resid_sd),
aes(lon, lat, shape = "Ensemble mean\n< StDev"))+
labs(title = paste(2023, "flux anomaly decomposition"),
subtitle = .x$product) +
scale_fill_continuous_divergingx(
palette = "RdBu",
rev = TRUE,
name = labels_breaks("fgco2"),
limits = c(quantile(.x$resid_mean, .01), quantile(.x$resid_mean, .99)),
oob = squish
)+
scale_shape_manual(values = 46, name = "") +
theme(legend.title = element_markdown(),
legend.position = "bottom") +
facet_grid(
month ~ name,
labeller = labeller(name = x_axis_labels)
) +
theme(strip.text.x.top = element_markdown())
)
[[1]]
pco2_product_coarse_annual_flux_attribution <-
pco2_product_coarse_monthly_flux_attribution %>%
group_by(product, lat, lon, name) %>%
summarise(resid = mean(resid, na.rm = TRUE)) %>%
ungroup()
map +
geom_tile(data = pco2_product_coarse_annual_flux_attribution,
aes(lon, lat, fill = resid)) +
scale_fill_continuous_divergingx(
palette = "RdBu",
rev = TRUE,
name = labels_breaks("fgco2"),
limits = c(quantile(pco2_product_coarse_annual_flux_attribution$resid, .01, na.rm = TRUE),
quantile(pco2_product_coarse_annual_flux_attribution$resid, .99, na.rm = TRUE)),
oob = squish
)+
labs(title = paste(2023, "annual mean flux anomaly decomposition")) +
theme(legend.title = element_markdown(),
legend.position = "bottom") +
facet_grid(product ~ name,
labeller = labeller(name = x_axis_labels)) +
theme(strip.text.x.top = element_markdown())
pco2_product_coarse_annual_flux_attribution %>%
filter(product %in% pco2_product_list) %>%
group_by(name, lon, lat) %>%
summarize(
resid_sd = sd(resid),
resid_mean = mean(resid),
n = n()
) %>%
ungroup() %>%
filter(n == length(pco2_product_list)) %>%
select(-n) %>%
mutate(product = "Ensemble mean") %>%
drop_na() %>%
group_split(product) %>%
# head(1) %>%
map(
~ map +
geom_tile(data = .x,
aes(lon, lat, fill = resid_mean)) +
geom_point(data = .x %>% filter(abs(resid_mean) < resid_sd),
aes(lon, lat, shape = "Ensemble mean\n< StDev"))+
labs(title = paste(2023, "flux anomaly decomposition"),
subtitle = .x$product) +
scale_fill_continuous_divergingx(
palette = "RdBu",
rev = TRUE,
name = labels_breaks("fgco2"),
limits = c(quantile(.x$resid_mean, .01), quantile(.x$resid_mean, .99)),
oob = squish
)+
scale_shape_manual(values = 46, name = "") +
theme(legend.title = element_markdown(),
legend.position = "bottom") +
facet_wrap(
~ name,
labeller = labeller(name = x_axis_labels),
ncol = 1
) +
theme(strip.text.x.top = element_markdown())
)
[[1]]
The following Hovmoeller plots show the anomalies from the prediction of a linear/quadratic fit to the data from 1990 to 2022.
Hovmoeller plots are presented 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_monthly_regression %>%
filter(name %in% name_core) %>%
group_split(name) %>%
# head(1) %>%
map(
~ ggplot(data = .x,
aes(decimal, lat, fill = resid)) +
geom_raster() +
scale_fill_continuous_divergingx(
palette = "RdBu",
rev = TRUE,
name = labels_breaks(.x %>% distinct(name)),
limits = c(quantile(.x$resid,.01),quantile(.x$resid,.99)),
oob = squish
) +
theme(legend.title = element_markdown()) +
coord_cartesian(expand = 0) +
labs(title = "Monthly mean anomalies",
y = "Latitude") +
theme(axis.title.x = element_blank()) +
facet_wrap(~ product, ncol = 1)
)
[[1]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[2]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[3]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
a29d870 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[4]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[5]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
a29d870 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[6]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
60abdac | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[7]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
pco2_product_hovmoeller_monthly_regression_ensemble <-
pco2_product_hovmoeller_monthly_regression %>%
group_by(name, decimal, lat) %>%
summarize(
resid_range = max(resid) - min(resid),
resid_mean = mean(resid),
n = n()
) %>%
ungroup() %>%
filter(n > 1)
pco2_product_hovmoeller_monthly_regression_ensemble %>%
mutate(product = "Ensemble mean") %>%
group_split(name) %>%
# head(1) %>%
map(
~ ggplot(data = .x,
aes(decimal, lat, fill = resid_mean)) +
geom_raster() +
scale_fill_continuous_divergingx(
palette = "RdBu",
rev = TRUE,
name = labels_breaks(.x %>% distinct(name)),
limits = c(quantile(.x$resid_mean, .01), quantile(.x$resid_mean, .99)),
oob = squish
) +
theme(legend.title = element_markdown()) +
coord_cartesian(expand = 0) +
labs(title = "Monthly mean anomalies",
y = "Latitude") +
theme(axis.title.x = element_blank()) +
facet_wrap( ~ product, ncol = 1)
)
[[1]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
37ccea4 | jens-daniel-mueller | 2024-04-08 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[2]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
37ccea4 | jens-daniel-mueller | 2024-04-08 |
[[3]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
a29d870 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
37ccea4 | jens-daniel-mueller | 2024-04-08 |
[[4]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
37ccea4 | jens-daniel-mueller | 2024-04-08 |
[[5]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
a29d870 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
37ccea4 | jens-daniel-mueller | 2024-04-08 |
[[6]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
7f9c687 | jens-daniel-mueller | 2024-04-23 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
37ccea4 | jens-daniel-mueller | 2024-04-08 |
[[7]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
7f9c687 | jens-daniel-mueller | 2024-04-23 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
left_join(
pco2_product_hovmoeller_monthly_regression_ensemble,
pco2_product_hovmoeller_monthly_regression
) %>%
mutate(resid_offset = resid - resid_mean) %>%
group_split(name) %>%
# head(1) %>%
map(
~ ggplot(data = .x,
aes(decimal, lat, fill = resid_offset)) +
geom_raster() +
scale_fill_continuous_divergingx(
palette = "RdBu",
rev = TRUE,
name = labels_breaks(.x %>% distinct(name)),
limits = c(quantile(.x$resid_mean, .01), quantile(.x$resid_mean, .99)),
oob = squish
) +
theme(legend.title = element_markdown()) +
coord_cartesian(expand = 0)+
labs(title = "Monthly offset from ensemble mean anomalies",
y = "Latitude") +
theme(axis.title.x = element_blank()) +
facet_wrap( ~ product, ncol = 1)
)
[[1]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
37ccea4 | jens-daniel-mueller | 2024-04-08 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[2]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
37ccea4 | jens-daniel-mueller | 2024-04-08 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[3]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
a29d870 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
37ccea4 | jens-daniel-mueller | 2024-04-08 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[4]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
37ccea4 | jens-daniel-mueller | 2024-04-08 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[5]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
a29d870 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
37ccea4 | jens-daniel-mueller | 2024-04-08 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[6]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
7f9c687 | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
37ccea4 | jens-daniel-mueller | 2024-04-08 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[7]]
Version | Author | Date |
---|---|---|
a29d870 | jens-daniel-mueller | 2024-05-16 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
960912c | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
7f9c687 | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
37ccea4 | jens-daniel-mueller | 2024-04-08 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
The following plots show biome-, super biome- or global- averaged/integrated values of each variable as provided through the pCO2 product, represented here as the anomalies from the prediction of a linear/quadratic fit to the data from 1990 to 2022.
Anomalies are presented relative to the predicted annual mean of each year, hence preserving the seasonality.
pco2_product_annual_regression %>%
filter(name %in% c("fgco2", "temperature"),
biome == "Global",
product %in% pco2_product_list) %>%
ggplot(aes(year, value, col = product)) +
geom_smooth(data = . %>% filter(year != 2023),
method = "lm",
se = FALSE,
fullrange = TRUE, linewidth = 0.3) +
geom_smooth(data = . %>% filter(year != 2023),
method = "lm",
se = FALSE) +
geom_path() +
geom_point() +
scale_color_okabeito() +
facet_grid(name ~ .,
scales = "free_y",
labeller = labeller(name = x_axis_labels),
switch = "y") +
theme(
legend.title = element_blank(),
axis.title = element_blank(),
strip.text.y.left = element_markdown(),
strip.placement = "outside",
strip.background.y = element_blank(),
legend.position = "top"
)
pco2_product_annual_regression %>%
filter(year == 2023,
name %in% name_core) %>%
mutate(region = case_when(biome == "Global" ~ "Global",
biome %in% super_biomes ~ "Super biomes",
TRUE ~ "Biomes"),
region = factor(region, levels = c("Global", "Super biomes", "Biomes"))) %>%
group_split(name) %>%
# head(1) %>%
map(
~ ggplot(data = .x) +
geom_col(aes(biome, value, fill = product),
position = "dodge2") +
scale_fill_light() +
geom_col(aes(biome, fit, group = product, col = paste0(2023,"\nlinear\nprediction")),
position = "dodge2",
fill = "transparent") +
labs(y = labels_breaks(unique(.x$name))$i_legend_title,
title = "Absolute") +
scale_color_grey() +
facet_grid(.~region, scales = "free_x", space = "free_x") +
theme(legend.title = element_blank(),
axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1),
axis.title.x = element_blank(),
axis.title.y = element_markdown(),
strip.background = element_blank(),
legend.position = "top")
)
[[1]]
Version | Author | Date |
---|---|---|
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[2]]
Version | Author | Date |
---|---|---|
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[3]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[4]]
[[5]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[6]]
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
60abdac | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[7]]
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
full_join(
pco2_product_annual_regression %>%
filter(year != 2023,
name %in% name_core) %>%
group_by(product, name, biome) %>%
summarise(resid_sd = sd(resid)) %>%
ungroup(),
pco2_product_annual_regression %>%
filter(year == 2023,
name %in% name_core)) %>%
mutate(
region = case_when(
biome == "Global" ~ "Global",
biome %in% super_biomes ~ "Super biomes",
TRUE ~ "Biomes"
),
region = factor(region, levels = c("Global", "Super biomes", "Biomes"))
) %>%
group_split(name) %>%
# head(1) %>%
map(
~ ggplot(data = .x) +
geom_col(aes(biome, value - fit, fill = product),
position = "dodge2") +
scale_fill_light() +
geom_col(aes(biome, resid_sd * sign(value - fit),
group = product, col = paste0("Anomaly SD\nexcl.",2023)),
position = "dodge2",
fill = "transparent") +
labs(y = labels_breaks(unique(.x$name))$i_legend_title,
title = "Anomalies") +
scale_color_grey() +
facet_grid(.~region, scales = "free_x", space = "free_x") +
theme(legend.title = element_blank(),
axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1),
axis.title.x = element_blank(),
axis.title.y = element_markdown(),
strip.background = element_blank(),
legend.position = "top")
)
[[1]]
Version | Author | Date |
---|---|---|
589243f | jens-daniel-mueller | 2024-05-15 |
1e4c153 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[2]]
Version | Author | Date |
---|---|---|
589243f | jens-daniel-mueller | 2024-05-15 |
1e4c153 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[3]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
589243f | jens-daniel-mueller | 2024-05-15 |
1e4c153 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[4]]
Version | Author | Date |
---|---|---|
589243f | jens-daniel-mueller | 2024-05-15 |
1e4c153 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[5]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
589243f | jens-daniel-mueller | 2024-05-15 |
1e4c153 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[6]]
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
1e4c153 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
60abdac | jens-daniel-mueller | 2024-04-23 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
[[7]]
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
pco2_product_annual_detrended %>%
filter(biome %in% "Global",
name %in% c("fgco2", "temperature"),
product %in% "OceanSODA") %>%
p_season(title = "Anomalies from predicted annual mean | Global")
pco2_product_annual_detrended %>%
filter(biome %in% "Global",
name %in% c("fgco2", "temperature"),
product %in% pco2_product_list) %>%
p_season(title = "Anomalies from predicted annual mean | Global")
pco2_product_annual_detrended %>%
filter(biome %in% "Global",
name %in% name_core) %>%
p_season(title = "Anomalies from predicted annual mean | Global")
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
47f8868 | jens-daniel-mueller | 2024-05-15 |
589243f | jens-daniel-mueller | 2024-05-15 |
1e4c153 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
e44a62b | jens-daniel-mueller | 2024-04-23 |
7f9c687 | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
238d229 | jens-daniel-mueller | 2024-04-11 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
pco2_product_annual_detrended %>%
filter(biome %in% super_biomes,
name %in% name_core) %>%
group_split(biome) %>%
# head(1) %>%
map(~ p_season(
df = .x,
title = paste("Anomalies from predicted annual mean |", .x$biome)
))
[[1]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
47f8868 | jens-daniel-mueller | 2024-05-15 |
589243f | jens-daniel-mueller | 2024-05-15 |
1e4c153 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
e44a62b | jens-daniel-mueller | 2024-04-23 |
7f9c687 | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
238d229 | jens-daniel-mueller | 2024-04-11 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[2]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
47f8868 | jens-daniel-mueller | 2024-05-15 |
589243f | jens-daniel-mueller | 2024-05-15 |
1e4c153 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
e44a62b | jens-daniel-mueller | 2024-04-23 |
7f9c687 | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
238d229 | jens-daniel-mueller | 2024-04-11 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
pco2_product_annual_detrended %>%
filter(biome %in% key_biomes,
name %in% name_core) %>%
group_split(biome) %>%
# head(1) %>%
map(~ p_season(
df = .x,
title = paste("Anomalies from predicted annual mean |", .x$biome)
))
[[1]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
47f8868 | jens-daniel-mueller | 2024-05-15 |
589243f | jens-daniel-mueller | 2024-05-15 |
1e4c153 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
e44a62b | jens-daniel-mueller | 2024-04-23 |
7f9c687 | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
238d229 | jens-daniel-mueller | 2024-04-11 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[2]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
47f8868 | jens-daniel-mueller | 2024-05-15 |
589243f | jens-daniel-mueller | 2024-05-15 |
1e4c153 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
6709afa | jens-daniel-mueller | 2024-04-12 |
238d229 | jens-daniel-mueller | 2024-04-11 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[3]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
47f8868 | jens-daniel-mueller | 2024-05-15 |
589243f | jens-daniel-mueller | 2024-05-15 |
1e4c153 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
6709afa | jens-daniel-mueller | 2024-04-12 |
238d229 | jens-daniel-mueller | 2024-04-11 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[4]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
47f8868 | jens-daniel-mueller | 2024-05-15 |
589243f | jens-daniel-mueller | 2024-05-15 |
1e4c153 | jens-daniel-mueller | 2024-05-14 |
009791f | jens-daniel-mueller | 2024-05-14 |
6709afa | jens-daniel-mueller | 2024-04-12 |
238d229 | jens-daniel-mueller | 2024-04-11 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
pco2_product_monthly_detrended %>%
filter(biome %in% "Global",
name %in% name_core) %>%
p_season(title = "Anomalies from predicted monthly mean | Global")
pco2_product_monthly_detrended %>%
filter(biome %in% super_biomes,
name %in% name_core) %>%
group_split(biome) %>%
# head(1) %>%
map(
~ p_season(df = .x,
title = paste("Anomalies from predicted monthly mean |", .x$biome))
)
[[1]]
[[2]]
pco2_product_monthly_detrended %>%
filter(biome %in% key_biomes,
name %in% name_core) %>%
group_split(biome) %>%
# head(1) %>%
map(~ p_season(
df = .x,
title = paste("Anomalies from predicted monthly mean |", .x$biome)
))
[[1]]
[[2]]
[[3]]
[[4]]
The following plots aim to unravel the correlation between biome-, super-biome- or globally- 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 the globally and biome-integrated fluxes separately. Secondly, we normalize the anomalies to the monthly spread (expressed as standard deviation) of the anomalies from 1990 to 2021.
pco2_product_annual_regression %>%
filter(biome %in% "Global",
name %in% name_core) %>%
select(-c(value, fit)) %>%
pivot_wider(values_from = resid) %>%
pivot_longer(-c(product, year, biome, fgco2_int)) %>%
group_split(name) %>%
# head(1) %>%
map(
~ ggplot(data = .x,
aes(value, fgco2_int)) +
geom_hline(yintercept = 0) +
geom_point(
data = . %>% filter(year != 2023),
aes(fill = year),
shape = 21
) +
geom_smooth(
data = . %>% filter(year != 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(y = labels_breaks("fgco2_int")$i_legend_title,
x = labels_breaks(unique(.x$name))$i_legend_title) +
facet_grid(
biome ~ product,
scales = "free_y"
) +
theme(
axis.title.x = element_markdown(),
axis.title.y = element_markdown(),
legend.title = element_blank()
)
)
[[1]]
Version | Author | Date |
---|---|---|
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[2]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[3]]
Version | Author | Date |
---|---|---|
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[4]]
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[5]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[6]]
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
pco2_product_annual_regression %>%
filter(biome %in% super_biomes,
name %in% name_core) %>%
select(-c(value, fit)) %>%
pivot_wider(values_from = resid) %>%
pivot_longer(-c(product, year, biome, fgco2_int)) %>%
group_split(name) %>%
# head(1) %>%
map(
~ ggplot(data = .x,
aes(value, fgco2_int)) +
geom_hline(yintercept = 0) +
geom_point(
data = . %>% filter(year != 2023),
aes(fill = year),
shape = 21
) +
geom_smooth(
data = . %>% filter(year != 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(y = labels_breaks("fgco2_int")$i_legend_title,
x = labels_breaks(unique(.x$name))$i_legend_title) +
facet_grid(
biome ~ product,
scales = "free_y"
) +
theme(
axis.title.x = element_markdown(),
axis.title.y = element_markdown(),
legend.title = element_blank()
)
)
[[1]]
Version | Author | Date |
---|---|---|
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[2]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[3]]
Version | Author | Date |
---|---|---|
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[4]]
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[5]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[6]]
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
pco2_product_annual_regression %>%
filter(biome %in% key_biomes,
name %in% name_core) %>%
select(-c(value, fit)) %>%
pivot_wider(values_from = resid) %>%
pivot_longer(-c(product, year, biome, fgco2_int)) %>%
group_split(name) %>%
# head(1) %>%
map(
~ ggplot(data = .x,
aes(value, fgco2_int)) +
geom_hline(yintercept = 0) +
geom_point(
data = . %>% filter(year != 2023),
aes(fill = year),
shape = 21
) +
geom_smooth(
data = . %>% filter(year != 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(y = labels_breaks("fgco2_int")$i_legend_title,
x = labels_breaks(unique(.x$name))$i_legend_title) +
facet_grid(
biome ~ product,
scales = "free_y"
) +
theme(
axis.title.x = element_markdown(),
axis.title.y = element_markdown(),
legend.title = element_blank()
)
)
[[1]]
Version | Author | Date |
---|---|---|
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[2]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[3]]
Version | Author | Date |
---|---|---|
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[4]]
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[5]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
[[6]]
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
dfcf790 | jens-daniel-mueller | 2024-04-11 |
d5075c5 | jens-daniel-mueller | 2024-04-11 |
19f40c9 | jens-daniel-mueller | 2024-04-05 |
a83c8fc | jens-daniel-mueller | 2024-04-03 |
pco2_product_monthly_detrended %>%
filter(biome == "Global") %>%
select(-c(time, fit, value)) %>%
pivot_wider(values_from = resid) %>%
pivot_longer(-c(product, year, month, biome, fgco2_int)) %>%
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)
) +
labs(
y = labels_breaks("fgco2_int")$i_legend_title,
x = labels_breaks(unique(.x$name))$i_legend_title
) +
facet_grid(biome ~ product,
scales = "free_y") +
theme(
axis.title.x = element_markdown(),
axis.title.y = element_markdown()
)
)
[[1]]
Version | Author | Date |
---|---|---|
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
6709afa | jens-daniel-mueller | 2024-04-12 |
58e3680 | jens-daniel-mueller | 2024-04-11 |
[[2]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
6709afa | jens-daniel-mueller | 2024-04-12 |
[[3]]
Version | Author | Date |
---|---|---|
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
6709afa | jens-daniel-mueller | 2024-04-12 |
[[4]]
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
6709afa | jens-daniel-mueller | 2024-04-12 |
[[5]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
6709afa | jens-daniel-mueller | 2024-04-12 |
[[6]]
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
6709afa | jens-daniel-mueller | 2024-04-12 |
pco2_product_monthly_detrended %>%
filter(biome %in% super_biomes) %>%
select(-c(time, fit, value)) %>%
pivot_wider(values_from = resid) %>%
pivot_longer(-c(product, year, month, biome, fgco2_int)) %>%
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)
) +
labs(
y = labels_breaks("fgco2_int")$i_legend_title,
x = labels_breaks(unique(.x$name))$i_legend_title
) +
facet_grid(biome ~ product,
scales = "free_y") +
theme(
axis.title.x = element_markdown(),
axis.title.y = element_markdown()
)
)
[[1]]
Version | Author | Date |
---|---|---|
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
6709afa | jens-daniel-mueller | 2024-04-12 |
[[2]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
6709afa | jens-daniel-mueller | 2024-04-12 |
[[3]]
Version | Author | Date |
---|---|---|
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
6709afa | jens-daniel-mueller | 2024-04-12 |
[[4]]
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
6709afa | jens-daniel-mueller | 2024-04-12 |
[[5]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
6709afa | jens-daniel-mueller | 2024-04-12 |
[[6]]
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
6709afa | jens-daniel-mueller | 2024-04-12 |
pco2_product_monthly_detrended %>%
filter(biome %in% key_biomes) %>%
select(-c(time, fit, value)) %>%
pivot_wider(values_from = resid) %>%
pivot_longer(-c(product, year, month, biome, fgco2_int)) %>%
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)
) +
labs(
y = labels_breaks("fgco2_int")$i_legend_title,
x = labels_breaks(unique(.x$name))$i_legend_title
) +
facet_grid(biome ~ product,
scales = "free_y") +
theme(
axis.title.x = element_markdown(),
axis.title.y = element_markdown()
)
)
[[1]]
Version | Author | Date |
---|---|---|
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
6709afa | jens-daniel-mueller | 2024-04-12 |
[[2]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
6709afa | jens-daniel-mueller | 2024-04-12 |
[[3]]
Version | Author | Date |
---|---|---|
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
6709afa | jens-daniel-mueller | 2024-04-12 |
[[4]]
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
6709afa | jens-daniel-mueller | 2024-04-12 |
[[5]]
Version | Author | Date |
---|---|---|
5af03d1 | jens-daniel-mueller | 2024-05-17 |
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
60abdac | jens-daniel-mueller | 2024-04-23 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
6709afa | jens-daniel-mueller | 2024-04-12 |
[[6]]
Version | Author | Date |
---|---|---|
dbc1fc6 | jens-daniel-mueller | 2024-05-16 |
589243f | jens-daniel-mueller | 2024-05-15 |
009791f | jens-daniel-mueller | 2024-05-14 |
8c96de4 | jens-daniel-mueller | 2024-05-08 |
3fea035 | jens-daniel-mueller | 2024-05-08 |
4b81eaf | jens-daniel-mueller | 2024-05-07 |
1ff6eb0 | jens-daniel-mueller | 2024-04-22 |
9ecd92e | jens-daniel-mueller | 2024-04-22 |
231f7cd | jens-daniel-mueller | 2024-04-17 |
a5911f0 | jens-daniel-mueller | 2024-04-17 |
6709afa | jens-daniel-mueller | 2024-04-12 |
pco2_product_decomposition <-
fco2_decomposition(pco2_product_annual_detrended %>%
select(-c(time)),
biome, year, month)
pco2_product_decomposition %>%
filter(biome %in% "Global") %>%
group_split(biome) %>%
# head(1) %>%
map(
~ p_season(df = .x,
title = paste("Anomalies from predicted monthly mean |", .x$biome))
)
[[1]]
pco2_product_decomposition %>%
filter(biome %in% super_biomes) %>%
group_split(biome) %>%
# head(1) %>%
map(
~ p_season(df = .x,
title = paste("Anomalies from predicted monthly mean |", .x$biome))
)
[[1]]
[[2]]
pco2_product_decomposition %>%
filter(biome %in% key_biomes) %>%
group_split(biome) %>%
# head(1) %>%
map(
~ p_season(df = .x,
title = paste("Anomalies from predicted monthly mean |", .x$biome))
)
[[1]]
[[2]]
[[3]]
[[4]]
pco2_product_biome_monthly_flux_attribution <-
full_join(pco2_product_coarse_monthly_flux_attribution,
biome_mask,
relationship = "many-to-many") %>%
group_by(product, month, biome, name) %>%
summarise(resid = mean(resid, na.rm = TRUE)) %>%
ungroup()
pco2_product_biome_annual_flux_attribution <-
pco2_product_biome_monthly_flux_attribution %>%
group_by(product, biome, name) %>%
summarise(resid = mean(resid)) %>%
ungroup()
ggplot() +
geom_hline(yintercept = 0) +
geom_col(
data = pco2_product_biome_annual_flux_attribution %>%
filter(biome %in% c("Global", key_biomes)),
aes("", resid, fill = product),
position = position_dodge(width = 1),
alpha = 0.5, col = "grey30"
) +
geom_point(
data = pco2_product_biome_monthly_flux_attribution %>%
filter(biome %in% c("Global", key_biomes)),
aes("", resid, fill = product),
position = position_dodge(width = 1),
shape = 21, alpha = 0.5, col = "grey30"
) +
scale_fill_light() +
scale_color_light() +
labs(y = labels_breaks(unique("fgco2"))$i_legend_title) +
facet_grid(biome ~ name,
labeller = labeller(name = x_axis_labels),
switch = "x") +
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_monthly_flux_attribution %>%
filter(biome %in% c("Global", key_biomes)) %>%
ggplot() +
geom_hline(yintercept = 0) +
geom_path(
aes(month, resid, col = product)
) +
geom_point(
aes(month, resid, fill = product),
shape = 21,
alpha = 0.5,
col = "grey30"
) +
scale_fill_okabeito() +
scale_color_okabeito() +
labs(y = labels_breaks(unique("fgco2"))$i_legend_title) +
facet_grid(biome ~ name,
labeller = labeller(name = x_axis_labels),
switch = "x") +
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"
)
# biome_area <- biome_mask %>%
# mutate(area = earth_surf(lat, lon)) %>%
# group_by(biome) %>%
# summarise(area = sum(area)) %>%
# ungroup()
#
# pco2_product_monthly_flux_attribution <-
# full_join(
# pco2_product_monthly_flux_attribution,
# biome_area)
pco2_product_monthly_flux_attribution <-
flux_attribution(pco2_product_monthly_detrended %>%
select(-c(time)),
year, month, biome)
# biome_area <- biome_mask %>%
# mutate(area = earth_surf(lat, lon)) %>%
# group_by(biome) %>%
# summarise(area = sum(area)) %>%
# ungroup()
#
# pco2_product_monthly_flux_attribution <-
# full_join(
# pco2_product_monthly_flux_attribution,
# biome_area)
pco2_product_monthly_flux_attribution %>%
filter(biome %in% "Global") %>%
group_split(biome) %>%
# head(1) %>%
map(
~ p_season(
df = .x,
title = paste("Anomalies from predicted monthly mean |", .x$biome)
) +
facet_grid(
name ~ product,
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()
)
)
[[1]]
pco2_product_monthly_flux_attribution %>%
filter(biome %in% super_biomes) %>%
group_split(biome) %>%
# head(1) %>%
map(
~ p_season(
df = .x,
title = paste("Anomalies from predicted monthly mean |", .x$biome)
) +
facet_grid(
name ~ product,
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()
)
)
[[1]]
[[2]]
pco2_product_monthly_flux_attribution %>%
filter(biome %in% key_biomes) %>%
group_split(biome) %>%
# head(1) %>%
map(
~ p_season(
df = .x,
title = paste("Anomalies from predicted monthly mean |", .x$biome)
) +
facet_grid(
name ~ product,
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()
)
)
[[1]]
[[2]]
[[3]]
[[4]]
pco2_product_monthly_flux_attribution_annual <-
pco2_product_monthly_flux_attribution %>%
group_by(product, year, biome, name) %>%
summarise(resid = mean(resid)) %>%
ungroup()
pco2_product_monthly_flux_attribution_annual <-
full_join(
pco2_product_monthly_flux_attribution_annual %>%
filter(year == 2023) %>%
select(-year),
pco2_product_monthly_flux_attribution_annual %>%
filter(year != 2023) %>%
group_by(product, biome, name) %>%
summarise(resid_mean = mean(abs(resid))) %>%
ungroup())
pco2_product_monthly_flux_attribution_annual %>%
filter(biome %in% "Global") %>%
group_split(biome) %>%
# head(1) %>%
map(
~ ggplot(data = .x) +
geom_col(aes("x", resid, fill = product),
position = "dodge2") +
scale_fill_light() +
geom_col(
aes(
"x",
resid_mean * sign(resid),
group = product,
col = paste0("Mean\nexcl.",2023)
),
position = "dodge2",
fill = "transparent"
) +
labs(y = labels_breaks(unique("fgco2"))$i_legend_title,
title = .x$biome) +
facet_grid(
.~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"
)
)
[[1]]
pco2_product_monthly_flux_attribution_annual %>%
filter(biome %in% super_biomes) %>%
group_split(biome) %>%
# head(1) %>%
map(
~ ggplot(data = .x) +
geom_col(aes("x", resid, fill = product),
position = "dodge2") +
scale_fill_light() +
geom_col(
aes(
"x",
resid_mean * sign(resid),
group = product,
col = paste0("Mean\nexcl.",2023)
),
position = "dodge2",
fill = "transparent"
) +
labs(y = labels_breaks(unique("fgco2"))$i_legend_title,
title = .x$biome) +
facet_grid(
.~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"
)
)
[[1]]
[[2]]
pco2_product_monthly_flux_attribution_annual %>%
filter(biome %in% key_biomes) %>%
group_split(biome) %>%
# head(1) %>%
map(
~ ggplot(data = .x) +
geom_col(aes("x", resid, fill = product),
position = "dodge2") +
scale_fill_light() +
geom_col(
aes(
"x",
resid_mean * sign(resid),
group = product,
col = paste0("Mean\nexcl.",2023)
),
position = "dodge2",
fill = "transparent"
) +
labs(y = labels_breaks(unique("fgco2"))$i_legend_title,
title = .x$biome) +
facet_grid(
.~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"
)
)
[[1]]
[[2]]
[[3]]
[[4]]
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 biscale_1.0.0 ggtext_0.1.2
[4] khroma_1.9.0 ggnewscale_0.4.8 terra_1.7-65
[7] sf_1.0-9 rnaturalearth_0.1.0 geomtextpath_0.1.1
[10] colorspace_2.0-3 marelac_2.1.10 shape_1.4.6
[13] ggforce_0.4.1 metR_0.13.0 scico_1.3.1
[16] patchwork_1.1.2 collapse_1.8.9 forcats_0.5.2
[19] stringr_1.5.0 dplyr_1.1.3 purrr_1.0.2
[22] readr_2.1.3 tidyr_1.3.0 tibble_3.2.1
[25] ggplot2_3.4.4 tidyverse_1.3.2 workflowr_1.7.0
loaded via a namespace (and not attached):
[1] googledrive_2.0.0 ellipsis_0.3.2 class_7.3-20
[4] rprojroot_2.0.3 markdown_1.4 fs_1.5.2
[7] gridtext_0.1.5 rstudioapi_0.15.0 proxy_0.4-27
[10] farver_2.1.1 bit64_4.0.5 fansi_1.0.3
[13] lubridate_1.9.0 xml2_1.3.3 splines_4.2.2
[16] codetools_0.2-18 cachem_1.0.6 knitr_1.41
[19] polyclip_1.10-4 jsonlite_1.8.3 gsw_1.1-1
[22] broom_1.0.5 dbplyr_2.2.1 compiler_4.2.2
[25] httr_1.4.4 backports_1.4.1 Matrix_1.5-3
[28] assertthat_0.2.1 fastmap_1.1.0 gargle_1.2.1
[31] cli_3.6.1 later_1.3.0 tweenr_2.0.2
[34] htmltools_0.5.3 tools_4.2.2 rnaturalearthdata_0.1.0
[37] gtable_0.3.1 glue_1.6.2 Rcpp_1.0.11
[40] cellranger_1.1.0 jquerylib_0.1.4 vctrs_0.6.4
[43] nlme_3.1-160 xfun_0.35 ps_1.7.2
[46] rvest_1.0.3 timechange_0.1.1 lifecycle_1.0.3
[49] googlesheets4_1.0.1 oce_1.7-10 getPass_0.2-2
[52] MASS_7.3-58.1 vroom_1.6.0 hms_1.1.2
[55] promises_1.2.0.1 parallel_4.2.2 yaml_2.3.6
[58] memoise_2.0.1 sass_0.4.4 stringi_1.7.8
[61] highr_0.9 e1071_1.7-12 checkmate_2.1.0
[64] commonmark_1.8.1 rlang_1.1.1 pkgconfig_2.0.3
[67] systemfonts_1.0.4 evaluate_0.18 lattice_0.20-45
[70] SolveSAPHE_2.1.0 labeling_0.4.2 bit_4.0.5
[73] processx_3.8.0 tidyselect_1.2.0 here_1.0.1
[76] seacarb_3.3.1 magrittr_2.0.3 R6_2.5.1
[79] generics_0.1.3 DBI_1.1.3 mgcv_1.8-41
[82] pillar_1.9.0 haven_2.5.1 whisker_0.4
[85] withr_2.5.0 units_0.8-0 sp_1.5-1
[88] modelr_0.1.10 crayon_1.5.2 KernSmooth_2.23-20
[91] utf8_1.2.2 tzdb_0.3.0 rmarkdown_2.18
[94] grid_4.2.2 readxl_1.4.1 data.table_1.14.6
[97] callr_3.7.3 git2r_0.30.1 reprex_2.0.2
[100] digest_0.6.30 classInt_0.4-8 httpuv_1.6.6
[103] textshaping_0.3.6 munsell_0.5.0 bslib_0.4.1