df_TWD_blog <- df_TWD |>
mutate(
# Jahr für die Farbzuordnung
year = factor(
lubridate::year(date),
levels = c(2025, 2026)
),
# Beide Jahre auf derselben saisonalen x-Achse darstellen
plot_date = as.Date(
sprintf(
"2000-%02d-%02d",
lubridate::month(date),
lubridate::day(date)
)
),
# Standortkennung aus dem Baumnamen extrahieren
site = stringr::str_sub(tree_name, -2, -1),
# Beschriftung und Reihenfolge der Landschaftspositionen definieren
plot = factor(
site,
levels = c("P3", "P2", "P1", "G1"),
labels = c("Hoch", "Mittel", "Tief", "G1")
),
# Deutsche Trivialnamen für die Facettenbeschriftung
species = factor(
tree_genus_species,
levels = c(
"Abies alba",
"Fagus sylvatica"
),
labels = c(
"Weisstanne",
"Rotbuche"
)
)
) |>
filter(
year %in% c("2025", "2026"),
plot %in% c("Hoch", "Mittel", "Tief"),
tree_genus_species %in% c(
"Abies alba",
"Fagus sylvatica"
),
lubridate::month(date) >= 4,
lubridate::month(date) <= 10
) |>
# Einzelne Bäume getrennt halten
group_by(
plot_date,
year,
tree_name,
plot,
species
) |>
summarise(
TWD = mean(TWD_mean, na.rm = TRUE),
.groups = "drop"
) |>
filter(
is.finite(TWD)
)
df_TWD_summary <- df_TWD_blog |>
group_by(plot_date, year, plot, species) |>
summarise(
TWD_q25 = quantile(TWD, 0.25, na.rm = TRUE),
TWD_q75 = quantile(TWD, 0.75, na.rm = TRUE),
TWD = median(TWD, na.rm = TRUE),
.groups = "drop"
)
p_twd_blog <- ggplot(
df_TWD_summary,
aes(
x = plot_date,
y = TWD,
colour = year,
fill = year,
group = year
)
) +
geom_ribbon(
aes(ymin = TWD_q25, ymax = TWD_q75),
colour = NA,
alpha = 0.18,
na.rm = TRUE
) +
geom_line(
linewidth = 0.7,
na.rm = TRUE
) +
# Landschaftspositionen in Spalten, Arten in Zeilen
facet_grid(
cols = vars(plot),
rows = vars(species),
scales = "fixed"
) +
scale_colour_manual(
values = c(
"2025" = "darkgrey",
"2026" = highlight_colours[["2026"]]
),
drop = FALSE
) +
scale_fill_manual(
values = c(
"2025" = "darkgrey",
"2026" = highlight_colours[["2026"]]
),
drop = FALSE
) +
scale_x_date(
limits = as.Date(
c("2000-04-01", "2000-10-31")
),
date_breaks = "1 month",
labels = \(x) month_labels_de[lubridate::month(x)],
expand = expansion(
mult = c(0.01, 0.01)
)
) +
labs(
title = "Baumwasserdefizit der untersuchten Bäume",
x = NULL,
y = "Baumwasserdefizit (\u00b5m)",
colour = NULL,
fill = NULL,
caption = paste(
"Linien zeigen tägliche Mediane; Bänder den Interquartilsbereich zwischen den Bäumen.",
"Weisstanne entspricht Abies alba; Rotbuche Fagus sylvatica.\n",
"Höhere Werte zeigen eine stärkere Entleerung des in den elastischen",
"Stammgeweben gespeicherten Wassers an."
)
) +
guides(
colour = guide_legend(
order = 1
),
fill = "none"
) +
general_plot_theme +
theme(
legend.position = "inside",
legend.position.inside = c(0.01, 1.0),
legend.justification = c(0, 1),
legend.direction = "vertical",
legend.box = "vertical"
)
p_twd_blog