library(tidyverse)
library(lubridate)
library(rdwd)
library(ggplot2)
library(ggh4x)

# Weather data
nearbyStations(
  lat = 51.38,
  lon = 9.91,
  radius = 23,
  res = c("daily"),
  var = c("kl"),
  per = "recent")

link <- selectDWD(id = "1691",
                  res = "daily",
                  var = "kl",
                  per = c("historical"),
                  current = TRUE)
dwd_data <- dataDWD(link, force = TRUE)

date_range <- c(as.POSIXct("2021-05-01"), as.POSIXct("2021-10-23"))
date_range_2 <- c(as.POSIXct("2022-05-01"), as.POSIXct("2022-09-15"))
dwd_data_1 <- dwd_data %>% 
  filter(MESS_DATUM >= date_range[1] & MESS_DATUM <= date_range[2]) %>%
  mutate(year = "2021")
dwd_data_2 <- dwd_data %>% 
  filter(MESS_DATUM >= date_range_2[1] & MESS_DATUM <= date_range_2[2]) %>%
  mutate(year = "2022") 
dwd_data_1 <- dwd_data_1 %>%
  mutate(day_of_year = yday(MESS_DATUM))
dwd_data_2 <- dwd_data_2 %>%
  mutate(day_of_year = yday(MESS_DATUM))

# Combining both sets of data
dwd_data_combined <- bind_rows(dwd_data_1, dwd_data_2)
dwd_data_combined <- dwd_data_combined %>%
  mutate(date = as.Date(day_of_year - 1, origin = "2021-01-01"))

# Weather plot
ggplot(dwd_data_combined) +
  geom_col(aes(x = date, y = RSK), fill = "navy") +
  geom_line(aes(x = date, y = TMK * 2), color = "firebrick", linewidth = 0.5) +
  geom_vline(
    data = dwd_data_combined %>% filter(year == 2021),
    aes(xintercept = as.numeric(as.Date("2021-10-31"))),
    color = "black", linetype = "dashed"
  ) + 
  scale_y_continuous(
    name = "precipitation (mm)",
    breaks = c(10,20,30,40,50),
    sec.axis = sec_axis(~./2, name = "temperature (°C)")
  ) +
  labs(x = NULL) +
  theme_minimal() +
  facet_grid(~year, scales = "free_x", space = "free_x") +
  theme(
    axis.title.y.left = element_text(color = "navy", size = 10),
    axis.title.y.right = element_text(color = "firebrick", size = 10),
    axis.text.y.left = element_text(color = "navy"),
    axis.text.y.right = element_text(color = "firebrick"),
    axis.text.x = element_text(size = 10),
    plot.margin = margin(t = 0, r = 5, b = 0, l = 9, unit = "pt") 
  ) +
  coord_cartesian(clip = "off") +
  facetted_pos_scales(
    x = list(
      year == 2021 ~ scale_x_date(
        limits = c(as.Date("2021-05-01"), as.Date("2021-10-23")),
        date_breaks = "1 month",
        date_labels = "%b"
      ),
      year == 2022 ~ scale_x_date(
        limits = c(as.Date("2021-05-01"), as.Date("2021-09-15")),
        date_breaks = "1 month",
        date_labels = "%b")))

ggsave(filename = "Weather.pdf",
       width = 7, height = 2)



# Create data frame with sampling information
sampling_data <- tribble(
  ~trial, ~taxa, ~start_date, ~end_date, ~year,
  "2021a", "carabids", "2021-06-04", "2021-06-07", "2021",
  "2021a", "carabids", "2021-06-07", "2021-06-10", "2021",
  "2021a", "carabids", "2021-06-10", "2021-06-14", "2021",
  "2021a", "carabids", "2021-06-14", "2021-06-17", "2021",
  "2021a", "carabids", "2021-07-07", "2021-07-12", "2021",
  "2021a", "carabids", "2021-07-12", "2021-07-16", "2021",
  "2021a", "carabids", "2021-09-09", "2021-09-13","2021",
  "2021a", "carabids", "2021-10-18", "2021-10-22","2021",
  "2021a", "carabids", "2021-07-18", "2021-07-21","2022",
  "2021a", "carabids", "2021-07-21", "2021-07-25","2022",
  "2021a", "carabids", "2021-07-25", "2021-07-28","2022",
  "2021a", "spiders", "2021-06-14", "2021-06-17","2021",
  "2021a", "spiders", "2021-07-07", "2021-07-12","2021",
  "2021a", "spiders", "2021-09-09", "2021-09-13","2021",
  "2021a", "spiders", "2021-10-18", "2021-10-22","2021",
  "2021b", "carabids", "2021-06-11", "2021-06-15","2021",
  "2021b", "carabids", "2021-06-15", "2021-06-18","2021",
  "2021b", "carabids", "2021-06-18", "2021-06-22","2021",
  "2021b", "carabids", "2021-06-22", "2021-06-25","2021",
  "2021b", "carabids", "2021-07-08", "2021-07-12","2021",
  "2021b", "carabids", "2021-07-12", "2021-07-16","2021",
  "2021b", "carabids", "2021-08-29", "2021-09-02","2021",
  "2021b", "carabids", "2021-05-13", "2021-05-16","2022",
  "2021b", "carabids", "2021-07-18", "2021-07-21","2022",
  "2021b", "carabids", "2021-07-21", "2021-07-25","2022",
  "2021b", "carabids", "2021-07-25", "2021-07-28","2022",
  "2021b", "spiders", "2021-06-15", "2021-06-18","2021",
  "2021b", "spiders", "2021-07-12", "2021-07-16","2021",
  "2021b", "spiders", "2021-08-29", "2021-09-02","2021",
  "2022", "carabids", "2021-06-10", "2021-06-13","2022",
  "2022", "carabids", "2021-06-13", "2021-06-15","2022",
  "2022", "carabids", "2021-06-27", "2021-06-30","2022",
  "2022", "carabids", "2021-06-30", "2021-07-04","2022",
  "2022", "carabids", "2021-07-04", "2021-07-07","2022",
  "2022", "carabids", "2021-07-07", "2021-07-11","2022",
  "2022", "carabids", "2021-07-11", "2021-07-14","2022",
  "2022", "spiders", "2021-06-10", "2021-06-13","2022",
  "2022", "spiders", "2021-07-07", "2021-07-11","2022"
) %>%
  mutate(across(c(start_date, end_date), as.POSIXct))

# Sampling periods plot
ggplot(sampling_data, aes(x = start_date+hours(2), xend = end_date-hours(2), 
                          y = taxa, yend = taxa)) +
  geom_segment(aes(color = taxa), linewidth = 2) +
  facet_grid(trial~year, switch = "y") +
  geom_vline(xintercept = as.numeric(as.POSIXct("2021-10-31")), color = "black", 
             linetype = "dashed") +  
  scale_x_datetime(
    limits = c(as.POSIXct("2021-05-01"), as.POSIXct("2021-10-23")),
    date_labels = "%b",
    date_breaks = "1 month"
  ) +
  scale_color_manual(values = c("carabids" = "darkgreen", "spiders" = "orange")) +
  labs(
    x = NULL,
    y = "trial",
    color = NULL) +
  theme_minimal() +
  theme(
    strip.text.x = element_blank(),
    axis.text.y = element_blank(),
    panel.grid.major.y = element_blank(),
    legend.position = "bottom",
    legend.text = element_text(size = 10),
    strip.text.y.left = element_text(angle = 0),
    axis.text.x = element_text(size = 10),
    plot.margin = margin(t = 0, r = -20, b = 0, l = 5, unit = "pt") 
  ) +
  coord_cartesian(clip = "off") 

ggsave(filename = "Sampling period.pdf",
       width = 7, height = 1.7)
