Warming-driven shifts in floral traits generate flower-pollinator size mismatch and decrease reproductive output
Data files
Feb 17, 2026 version files 2.99 MB
-
Appendix_S2_(R_code_and_raw_data).xls
2.95 MB
-
R_code.txt
30.74 KB
-
README.md
14.27 KB
Abstract
Plant-pollinator interactions are essential for maintaining pollination services, but may be sensitive to disruption from climate change. Higher temperatures can reduce flower size, nectar availability, and other floral traits, and shorten pollinator tongue and increase body size. This could, in turn, reduce flower-pollinator size matching, leading to difficulties accessing nectar and effectively transferring pollen between flowers. However, the effects of climate change on plant-pollinator trait matching are rarely experimentally tested. We conducted a two-year simulated warming experiment and a follow-up trait manipulation experiment in the field. Our aim was to link the effects of simulated warming on flower size and morphology, pollination efficiency, and, ultimately, reproductive success of the bumblebee-pollinated Impatiens oxyanthera (Balsaminaceae). Warming significantly decreased the lengths of corolla tubes and nectar spurs in I. oxyanthera but did not affect the size of bumblebee visitors, leading to a size mismatch between the flowers and their pollinators. This mismatch resulted in a shorter visit duration of bumblebees on a single flower, reducing pollen deposition on the stigmas and female reproductive success. Experimental reductions in nectar spur length, mirroring the decreases observed under warming, impaired pollen depositio,n and reduced seed production, independent of bumblebee size. These findings suggest an additional mechanism through which climate change may result in size mismatch between interacting partners, consequently disrupting pollination services beyond climate-driven distribution range and phenological shifts.
Open Source Data
We have submitted our raw data (Appendix S2 (R code and raw data).xls, including 20 sheets), R script (R code.R).
- R_code.txt: This code summarizes all the Bayesian statistical models used in the study, showing which figure or table each analysis corresponds to, what biological variable was tested, which year(s) of data were used, and the exact brms model fitted in R. Each model examines how a response variable (such as floral traits, pollination measures, temperature, seed production, or pollinator body size) is affected by experimental treatment, year, or both, while accounting for the hierarchical design of the experiment using random effects (e.g., plants nested within plots). Different probability distributions were chosen depending on the type of data: Gamma for positive continuous traits, Gaussian for normally distributed data, Poisson or negative binomial for count data, Beta for proportions, Student-t for robust modeling of continuous data with outliers, and zero-inflated Poisson when many zeros occurred. All models were fitted using Bayesian Markov chain Monte Carlo methods with multiple chains and tuning parameters to ensure stable and reliable estimation.
Descriptions
File name: Appendix_S2_(R_code_and_raw_data).xls
Appendix S2 (R code and raw data).xls, sheet = “2 flower shape”
- year: year of data measurement
- Y2017* = 2017
- Y2018* = 2018
- treatment: warming treatment
*ambient * = ambient condition
*warmed * = warmed condition - group: experimental groups of the overall study
- plotID: identity of experimental plot
- plantID: identity of experimental plant individual
- corolla_tube_length: corolla tube length (mm)
- corolla_tube_width: corolla tube width (mm)
- corolla_tube_height: corolla tube height (mm)
- nectar_spur_length: nectar spur length (mm)
Appendix S2 (R code and raw data).xls, sheet = “3-12 flower-pollinator match”
- treatment: warming treatment
*ambient * = ambient condition
*warmed * = warmed condition - plotID: identity of experimental plot
- plantID: identity of experimental plant individual
- bumblebee_body_length(mm): body length of bumblebee (mm)
- bumblebee_body_width(mm): body width of bumblebee (mm)
- bumblebee_body_height(mm): body height of bumblebee (mm)
- bumblebee_tongue_length(mm): tongue length of bumblebee (mm)
- total_bumblebee_length(mm): total length of bumblebee (mm), which is equal to body length plus tongue length of bumblebee
- LD: length difference between corolla tube and pollinator body (mm)
- WD: width difference between corolla tube and pollinator body (mm)
- HD: height difference between corolla tube and pollinator body (mm)
- STLD: length difference between nectar spur and tongue (mm)
- TLD: total length difference between flower and pollinator(mm)
- RLD: relative length difference between corolla tube and pollinator body
* RLD = (corolla tube length - pollinator body length)/corolla tube length - RWD: relative width difference between corolla tube and pollinator body
* RWD = (corolla tube width - pollinator body width)/corolla tube width - RHD: relative height difference between corolla tube and pollinator body
* RHD = (corolla tube height - pollinator body height )/corolla tube height - RSTLD: relative length difference between nectar spur and pollinator tongue
- RSTLD = (nectar spur length - pollinator tongue length )/nectar spur length
- RTLD: relative total length difference between flower and pollinator
- RTLD = (total flower length - total pollinator length )/total flower length
Appendix S2 (R code and raw data).xls, sheet = “13 visit frequency”
- treatment: warming treatment
ambient = ambient condition
warmed = warmed condition - robber: focal flowers are sometimes?visited by nectar robbers. NR indicates non-robbing nectar group, in which the nectar spurs of focal flowers were bagged by nylon mesh nets to avoid the visitation by nectar robbers. R indicates robbing nectar group, in which the nectar spurs of focal flowers were exposed to nectar robbers.
- group: experimental groups of the overall study
- observation_date: the date that pollinator visiting behavior is observed
- initial_date: January 1, 2017, was used as the initial date of the study
- dateID: observation date ID
*dateID = observation_date - initial_date - Time_period: time of day when pollinator behavior is observed.
- timeID: identity of time period, 8:30-9:00, 9:30-10:00, 10:30-11:00, 14:30-15:00, 15:30-16:00,16:30-17:00 are labeled as time periods 1 to 6, respectively.
- flowerID: identity of focal flower
- visit30min: the number of times of the focal flower which is visited by pollinators every 30 minutes (no. flower-1. 30 min-1).
Appendix S2 (R code and raw data).xls, sheet = “14 visit duration time”
- treatment: warming treatment
ambient = ambient condition
warmed = warmed condition - robber: focal flowers are sometimes?visited by nectar robbers. NR indicates non-robbing nectar group, in which the nectar spurs of focal flowers were bagged by nylon mesh nets to avoid the visitation by nectar robbers. R indicates robbing nectar group, in which the nectar spurs of focal flowers were exposed to nectar robbers.
- group: experimental groups of the overall study
- observation_date: the date that pollinator visiting behavior is observed
- initial_date: January 1, 2017, was used as the initial date of the study
- dateID: observation date ID
*dateID = observation_date - initial_date - time_period: time of day when pollinator behavior is observed.
- timeID: identity of time period, 9:00-9:20, 10:00-10:20, 11:00-11:20, 15:00-15:20,16:00-16:20,17:00-17:20 are labeled as timeID 1 to 6, respectively.
- flowerID: identity of focal flower
- visit_duration_time: the visit duration time of pollinator per visit (s)
Appendix S2 (R code and raw data).xls, sheet = “15 pollen deposition”
- year: year of data measurement
* Y2017* = 2017
* Y2018* = 2018 - treatment: warming treatment
*ambient * = ambient condition
*warmed * = warmed condition - group: experimental groups of the overall study
- plotID: identity of experimental plot
- plantID: identity of experimental plant individual
- pollen_deposition: the number of pollen grains deposited on the stigma
Appendix S2 (R code and raw data).xls, sheet = “16 pollen deposition under spur”
- year: year of data measurement
* Y2018* = 2018, the treatment of nectar spur length was conducted only in 2018 - treatment: warming treatment
*ambient * = ambient condition
*warmed * = warmed condition - spur: the treatment of nectar spur length
CK = natural spur treatment as the control
SS = spur-shortened treatment - group: experimental groups of the overall study
- plotID: identity of experimental plot
- plantID: identity of experimental plant individual
- observation_date: the date that pollen deposition is observed
- initial date: January 1, 2018, was used as the initial date of the experiment of spur length treatment
- dateID: observation date ID
dateID = observation_date - initial date - pollen_deposition: the number of pollen grains deposited on the stigma
Appendix S2 (R code and raw data).xls, sheet = “17 seed number and seedset”
- year: year of data measurement
* Y2017* = 2017
* Y2018* = 2018 - treatment: warming treatment
*ambient * = ambient condition
*warmed * = warmed condition - group: experimental groups of the overall study
- plotID: identity of experimental plot
- plantID: identity of experimental plant individual
- seed_number: average seed number per fruit
- ovule_number: average ovule number per flower
- seedset: average seed set per fruit
seedset = seed number per fruit/ovule number per flower - sn: average seed number per fruit is rounded to the nearest integer
Appendix S2 (R code and raw data).xls, sheet = “18 seed number and seedset”
- treatment: warming treatment
*ambient * = ambient condition
*warmed * = warmed condition - spur: the treatment of nectar spur length
CK = natural spur treatment as the control
SS = spur-shortened treatment - group: experimental groups of the overall study
- plotID: identity of experimental plot
- plantID: identity of experimental plant individual
- collected date: the date of fruit collected
- seed_number: seed number per fruit
- seedset: seed set per fruit
Appendix S2 (R code and raw data).xls, sheet = “19 air temperature”
- year: year of data measurement
* Y2017* = 2017
* Y2018* = 2018 - treatment: warming treatment
*ambient * = ambient condition
*warmed * = warmed condition - plotID: identity of experimental plot
- air_temperature_during_day: average air temperature during the day (7:00-19:00) per experimental plot (℃)
- air_temperature_during_night: average air temperature during the night (19:00-7:00) per experimental plot (℃)
- air_temperature: average air temperature of the whole day per experimental plot (℃)
Appendix S2 (R code and raw data).xls, sheet = “20 soil temperature”
- year: year of data measurement
* Y2017* = 2017
* Y2018* = 2018 - treatment: warming treatment
*ambient * = ambient condition
*warmed * = warmed condition - plotID: identity of experimental plot
- soil_temperature: average soil temperature of the whole day per experimental plot (℃)
- soil_temperature_during_night: average soil temperature during the night (19:00-7:00) per experimental plot (℃)
- soil temperature_during_day: average soil temperature during the day (7:00-19:00) per experimental plot (℃)
Appendix S2 (R code and raw data).xls, sheet = “21-2017 paired air temperature”
- treatment: warming treatment
*ambient * = ambient condition
*warmed * = warmed condition - DateTime: the date and time of air temperature readings from thermohygrograph
- Date: the date of air temperature readings from thermohygrograph
- initial_date: January 1, 2017, was used as the initial date in 2017
- dateID: observation date ID
*dateID = Date - initial_date - time_period : the day or night
day= 07:00-19:00
night=19:00-07:00 - air_temperature: average air temperature per warming treatment (℃)
Appendix S2 (R code and raw data).xls, sheet = “22-2018 paired air temperature” paired air temperature in 2018.xls_Data
- treatment: warming treatment
*ambient * = ambient condition
*warmed * = warmed condition - time_period : the day or night
day= 07:00-19:00
night=19:00-07:00 - Date/Time: the date and time of air temperature readings from thermohygrograph
- initial_date: January 1, 2018, was used as the initial date in 2018
- dateID: observation date ID
*dateID = Date/Time - initial_date - air_temperature: average air temperature per warming treatment (℃)
Appendix S2 (R code and raw data).xls, sheet = “23 flower number”
- year: year of data measurement
* Y2017* = 2017
* Y2018* = 2018 - treatment: warming treatment
ambient = ambient condition
warmed = warmed condition - group: experimental groups of the overall study
- plotID: identity of experimental plot
- plantID: identity of experimental plant individual
- Flower_No: flower number per plant
Appendix S2 (R code and raw data).xls, sheet = “24 nectrar_volume”
- treatment: warming treatment
ambient = ambient condition
warmed = warmed condition - plotID: identity of experimental plot
- plantID: identity of experimental plant individual
- nectrar_volume: nectar volume per flower (μL)
Appendix S2 (R code and raw data).xls, sheet = “25 nectar sugar concentration”
- treatment: warming treatment
ambient = ambient condition
warmed = warmed condition - plotID: identity of experimental plot
- plantID: identity of experimental plant individual
- nectarcon: nectar sugar concentration per sample (%)
Appendix S2 (R code and raw data).xls, sheet = “26 pollen number per flower”
- year: year of data measurement
* Y2017* = 2017
* Y2018* = 2018 - treatment: warming treatment
ambient = ambient condition
warmed = warmed condition - group: experimental groups of the overall study
- plotID: identity of experimental plot
- plantID: identity of experimental plant individual
- pollen_number: pollen number per mature flower bud
Appendix S2 (R code and raw data).xls, sheet = “27 ovule_number per flower”
- year: year of data measurement
* Y2017* = 2017
* Y2018* = 2018 - treatment: warming treatment
ambient = ambient condition
warmed = warmed condition - group: experimental groups of the overall study
- plotID: identity of experimental plot
- plantID: identity of experimental plant individual
- ovule_number: ovule number per flower
Appendix S2 (R code and raw data).xls, sheet = “Fig.5 flower traits and pollen”
- Year: year of data measurement
* Y2017* = 2017
* Y2018* = 2018 - Treatment: warming treatment
ambient = ambient condition
warmed = warmed condition - Corolla tube length(mm): corolla tube length(mm)
- Nectar spur length(mm): nectar spur length(mm)
- pollen deposition (No.): the number of pollen deposited on the stigma(No.)
Appendix S2 (R code and raw data).xls, sheet = “Fig.5 flower traits and seed”
- Year: year of data measurement
- Y2017* = 2017
- Y2018* = 2018
- Treatment: warming treatment
ambient = ambient condition
warmed = warmed condition - Corolla tube length(mm): corolla tube length(mm)
- Nectar spur length(mm): nectar spur length(mm)
- Seed number per fruit: seed number per fruit
- Seed set per fruit: seed set per fruit
