Chapter 28 Experimentally enhanced PLS

Learning goals for this lesson

  • Learn how to enhance your phenology records
  • Get some insights into work conducted in our lab

28.1 Enhanced phenology data

We’ve learned about the difficulty of working with data from locations such as Klein-Altendorf, where temperature dynamics limit our ability to probe for phenology responses to chill and heat variation (because there is very little variation during certain months). Can we possibly find a way to enhance our dataset, so that it becomes more amenable to the kind of analysis we want to do?

Yes, we can! And that is what we did in a two-winter experiment in Campus Klein-Altendorf (Fernandez et al., 2021). Our experiment relied on generating a number of environments to which young potted trees were exposed over the winter. During the season 2018/2019, we used three environmental conditions:

## Warning: package 'cowplot' was built under R version 4.3.2

During the second winter (2019/2020), we added 4 more environments to the experiment. These new environments were three chambers covered with different materials plus the conditions outside these chambers in Campus Endenich of the University of Bonn. By transferring the trees across environments at different times, we were able to generate 66 experimental seasons in apple and 33 experimental seasons in pear.

In the plot below, we can take a look at a schematic representation (animated🙂) of the experiment using the libraries ggplot2 and gganimate. Note that most of the code for plotting is a common ggplot call using the geom_jitter() and geom_path() functions. We can later add the animation with the transition_reveal() function.

We’ll need the interactive_plot_PLS.csv file, which you can download here. As usual, please save this in your data directory.

library(ggplot2)
library(gganimate)
library(gifski)
library(png)

data <- read_tab("data/interactive_plot_PLS.csv")

# This part is to re-code the different conditions
data[which(data$Final_Condition == "Outside"), 
     "Final_condition_2"] <- 1
data[which(data$Final_Condition == "Un-heated"),
     "Final_condition_2"] <- 2
data[which(data$Final_Condition == "Heated"),
     "Final_condition_2"] <- 3

# Implement the plot
exp_plot <- 
  ggplot(data,
       aes(Day, 
           Final_condition_2,
           color = factor(Treatment,
                          levels = c(1 : 33)))) +
  geom_jitter(size = 4) +
  geom_path(size = 1) +
  scale_y_continuous(breaks = c(1, 
                                2,
                                3),
                     labels = c("Outside",
                                "Un-Heated",
                                "Heated")) +
  scale_x_continuous(breaks = as.numeric(levels(as.factor(data$Day))),
                     labels = levels(as.factor(data$Day))) +
  labs(x = "Days of experiment",
       y = "Condition",
       color = "Treatment") +
  theme_bw() +
  theme(axis.text.y = element_text(angle = 90, 
                                   hjust = 0.5),
        legend.position = "none") +
  transition_reveal(Day)

anim_save("data/interactive_experiment_plot.gif",
          animation = last_animation())
Illustration of the tree movements in our PLS-enhancement experiment
Illustration of the tree movements in our PLS-enhancement experiment

We recorded the date of bloom in our trees after exposing them to different temperature patterns over the winter period. This range of conditions resulted in substantial differences in bloom dates.

In the plot above, you can see the mean temperature (solid line), the range of mean temperature (sky blue shade) and the range of bloom dates (rectangles at the bottom) among treatments over the two winters.

Now that we know how the data were generated, we can take a look at some of the general results generated by this study. Let’s load the weather files and the file of flowering date observations for apples (and save them in the data directory):