annual_hist <- annual_std |>
dplyr::select(site, year, dplyr::all_of(vars_of_interest)) |>
dplyr::filter(year < max(year, na.rm = TRUE)) |>
dplyr::summarize(dplyr::across(dplyr::all_of(vars_of_interest), ~mean(.x, na.rm = TRUE)),
.by = site)
annual_curr <- annual_std |>
dplyr::select(site, year, dplyr::all_of(vars_of_interest)) |>
dplyr::filter(year == max(year, na.rm = TRUE)) |>
dplyr::summarize(dplyr::across(dplyr::all_of(vars_of_interest), ~mean(.x, na.rm = TRUE)),
.by = site)
plot_df <- dplyr::bind_rows(
dplyr::mutate(annual_hist, period = "hist"),
dplyr::mutate(annual_curr, period = "curr")
) |>
tidyr::pivot_longer(c(-site, -period)) |>
tidyr::pivot_wider(names_from = period, values_from = value) |>
dplyr::mutate(diff = curr - hist) |>
tidyr::pivot_wider(names_from = name, values_from = c(hist, curr, diff)) |>
dplyr::left_join(metadata |> dplyr::select(site, LOCATION_LAT, LOCATION_LONG), dplyr::join_by(site)) |>
dplyr::filter(is.finite(LOCATION_LONG), is.finite(LOCATION_LAT)) |>
sf::st_as_sf(coords = c("LOCATION_LONG","LOCATION_LAT"), crs = 4326)
make_pair <- function(var){
lab <- stringr::str_extract(var, "GPP|NEE|RECO")
var_hist <- paste0("hist_", var)
var_diff <- paste0("diff_", var)
p1 <- plot_df |>
dplyr::filter(dplyr::if_all(dplyr::all_of(var_hist), is.finite)) |>
ggplot() +
geom_sf(data = world, fill = "white") +
geom_sf(aes(color = .data[[var_hist]]), size = 0.4, na.rm = TRUE) +
labs(color = paste0(lab, " gC m<sup>-2</sup> y<sup>-1</sup>")) +
coord_sf(expand = FALSE) +
theme_void() +
theme(legend.title = ggtext::element_markdown(),
legend.position = "bottom",
legend.key.width = grid::unit(1, "null"),
panel.background = element_rect(fill = "lightblue", color = "black"))
if (lab == "NEE") {
p1 <- p1 + cols4all::scale_color_continuous_c4a_div("met.troy")
} else {
p1 <- p1 + scale_color_continuous_sequential(palette = "Viridis")
}
p2 <- plot_df |>
dplyr::filter(dplyr::if_all(dplyr::all_of(var_diff), is.finite)) |>
ggplot() +
geom_sf(data = world, fill = "white") +
geom_sf(aes(color = .data[[var_diff]]), size = 0.4, na.rm = TRUE) +
scale_color_continuous_diverging() +
labs(color = paste0(lab, " gC m<sup>-2</sup> y<sup>-1</sup>")) +
coord_sf(expand = FALSE) +
theme_void() +
theme(legend.title = ggtext::element_markdown(),
legend.position = "bottom",
legend.key.width = grid::unit(1, "null"),
panel.background = element_rect(fill = "lightblue", color = "black"))
p1 | p2
}
p_list <- lapply(vars_of_interest, make_pair)
p_fluxmaps <- patchwork::wrap_plots(p_list, ncol = 1) + patchwork::plot_annotation(tag_levels = "a")