Retour à la page d’accueil




Exercice 1:

  1. Utilisez la fonction pivot_longer() pour restructurer le tableau afin de faire un boxplot de blade.length.mm et total.leaf.length.mm, coloré par fluctuation.
  1. Ajoutez aux boxplots des encoches indiquant l’étendue de l’intervalle de confiance à 95% de la médiane (voir l’option notch dans geom_boxplot). Si les encoches sont étroite, il y a peu d’incertitude sur la médiane, si les encoches sont large, il y a une forte incertitude sur la médiane. Si les encoches de boxplots que nous comparons se chevauchent, alors nous ne pouvons pas conclure à une différence de médiane entre les médiane des deux groupes.
pivot_longer(expt1, names_to = "trait", values_to ="length.mm", 
            cols = c(blade.length.mm, total.leaf.length.mm)) %>% 
  ggplot(aes(x=trait, y=length.mm, color=fluctuation)) +
  geom_boxplot(notch=TRUE)
## Warning: Removed 630 rows containing non-finite values (`stat_boxplot()`).


  1. Interprétez le graphique: Y a t’il un effet de la fluctuation de température sur la longueur de blade ou de la feuille? Pourquoi?


Sur le graphique nous observons que les valeurs des boxplots pour les plantes ayant poussé en condition de température variable sont plus élevée que pour les plantes ayant pousser en condition de température stable. Pour les longueurs de blade et de la feuille, la médiane est plus élevée en condition de température variable, et les encoches sont petites, indiquant une forte certitude de la valeur de médiane, et ne se chevauchent pas entre les deux conditions indiquant une différence de médiane entre les deux conditions. Ce graphique montre que les plantes poussant en condition de température variable ont une longueur de blade et une longueur totale de la feuille plus grande que en condition de température constante.


BONUS Optimisez le graphique obtenu en jouant sur le thème, les couleurs utilisée (visibles par des daltoniens), le titre et la valeur des axes et de la légende, de manière à avoir un graphique similaire au graphique suivant:

pivot_longer(expt1, names_to = "trait", values_to ="length.mm", 
            cols = c(blade.length.mm, total.leaf.length.mm)) %>% 
  ggplot(aes(x=trait, y=length.mm, fill=fluctuation)) +
  geom_boxplot(notch = TRUE) +
  scale_fill_brewer(palette = "Set2", labels = c("Con"="Constant", "Var"="Variable"), 
                    name="Fluctuation type") +
  theme_bw() +
  scale_x_discrete(name="",labels=c("blade.length.mm"="Blade","total.leaf.length.mm"="Total leaf")) +
  ylab("Length (mm)")
## Warning: Removed 630 rows containing non-finite values (`stat_boxplot()`).


Exercice 2:

Calculez la médiane et l’écart-type de blade.length.mm et total.leaf.length.mm pour chaque genotype au différentes day.length. Ajoutez aussi le nombre d’observations de chaque groupe

group_by(expt1, genotype, day.length) %>% 
  summarise(mediane.blade.length.mm=median(blade.length.mm, na.rm = TRUE),
            ecart.type.blade.length.mm=sd(blade.length.mm, na.rm = TRUE),
            mediane.total.leaf.length.mm=median(total.leaf.length.mm, na.rm = TRUE),
            ecart.type.total.leaf.length.mm=sd(total.leaf.length.mm, na.rm = TRUE),
            n.obs=n())
## `summarise()` has grouped output by 'genotype'. You can override using the
## `.groups` argument.
## # A tibble: 20 × 7
## # Groups:   genotype [10]
##    genotype   day.length mediane.blade.length.mm ecart.type.blade.length.mm
##    <chr>           <dbl>                   <dbl>                      <dbl>
##  1 Col Ama             8                    23.1                       4.13
##  2 Col Ama            16                    13.7                       2.12
##  3 Col FRI             8                    23.4                       3.78
##  4 Col FRI            16                    20.1                       3.75
##  5 Ler-1               8                    21.6                       8.00
##  6 Ler-1              16                    13.8                       3.65
##  7 fca-6               8                    22.4                       5.28
##  8 fca-6              16                    16.8                       3.02
##  9 flc-3 FRI           8                    23.5                       3.99
## 10 flc-3 FRI          16                    13.5                       3.05
## 11 flk-1               8                    23.2                       9.75
## 12 flk-1              16                    20.8                       3.63
## 13 fve-3               8                    20.5                       3.12
## 14 fve-3              16                    21.9                       2.13
## 15 ld-1                8                    24.4                       4.12
## 16 ld-1               16                    24.2                       3.03
## 17 prmt5 FRI           8                    20.8                       3.62
## 18 prmt5 FRI          16                    19.9                       3.81
## 19 vin3-4 FRI          8                    21.4                       3.49
## 20 vin3-4 FRI         16                    23.6                       3.23
## # ℹ 3 more variables: mediane.total.leaf.length.mm <dbl>,
## #   ecart.type.total.leaf.length.mm <dbl>, n.obs <int>


BONUS
Calculez chaque genotype en fonction de s’ils ont subit ou non une vernalization: La moyenne du ratio de blade.length.mm et total.leaf.length.mm
Le nombre d’observation de chaque groupe
Modifiez la colonne qui contient le nombre d’observations de manière à ajouter “n=” devant la valeur du nombre d’observations

group_by(expt1, genotype, vernalization) %>% 
  summarise(average.blade.ratio=mean(blade.length.mm/total.leaf.length.mm, na.rm = TRUE),
            n.obs=n()) %>% 
  mutate(n.obs=paste("n=",n.obs))
## `summarise()` has grouped output by 'genotype'. You can override using the
## `.groups` argument.
## # A tibble: 15 × 4
## # Groups:   genotype [10]
##    genotype   vernalization average.blade.ratio n.obs
##    <chr>      <chr>                       <dbl> <chr>
##  1 Col Ama    NV                          0.587 n= 67
##  2 Col Ama    V                           0.584 n= 68
##  3 Col FRI    NV                          0.605 n= 60
##  4 Col FRI    V                           0.577 n= 68
##  5 Ler-1      NV                          0.671 n= 68
##  6 fca-6      NV                          0.618 n= 64
##  7 flc-3 FRI  NV                          0.606 n= 68
##  8 flc-3 FRI  V                           0.579 n= 68
##  9 flk-1      NV                          0.725 n= 60
## 10 fve-3      NV                          0.593 n= 60
## 11 ld-1       NV                          0.617 n= 60
## 12 prmt5 FRI  NV                          0.612 n= 60
## 13 prmt5 FRI  V                           0.603 n= 65
## 14 vin3-4 FRI NV                          0.603 n= 60
## 15 vin3-4 FRI V                           0.572 n= 61



Exercice 3

Faites un voilin plot de total.leaf.length.mm pour chaque génotype et ajoutez la médiane pour chaque groupe (avec un point coloré) ainsi que le nombre d’observation de chaque groupe

group_by(expt1, genotype) %>% 
  summarise( mediane.total.leaf.length.mm=median(total.leaf.length.mm, na.rm = TRUE),
            n.obs=n()) %>% 
  mutate(n.obs=paste("n =",n.obs)) %>% 
  full_join(expt1, by="genotype") %>%
  ggplot(aes(x=genotype, y=total.leaf.length.mm)) +
  geom_violin() +
  geom_point(aes(x=genotype, y=mediane.total.leaf.length.mm), col="red") +
  geom_text(aes(label=n.obs, x=genotype, y=0))
## Warning: Removed 303 rows containing non-finite values (`stat_ydensity()`).



Exercice 4

Représenter des violin plot de cauline.leaf.num pour les génotypes de background “Col”, colorés par la température et ce uniquement pour les plantes sans fluctuation de température et qui sont en jours longs (16 h).

Ordonnez les génotypes selon ces deux cas (un graphique par cas):

-1 Dans l’ordre suivant: “Col Ama”, “ld-1”, “fve-3”, “flk-1”

-2 Dans l’ordre de la valeur de cauline.leaf.num

# Ordonnez les génotypes dans l'ordre suivant: "Col Ama", "ld-1", "fve-3", "flk-1"

  filter(expt1, background=="Col" & fluctuation=="Con" & day.length==16) %>% 
  mutate(genotype = factor(genotype, levels = c("Col Ama", "ld-1", "fve-3", "flk-1"))) %>% 
  ggplot(aes(x=genotype, y=cauline.leaf.num, fill=factor(temperature))) +
  geom_violin()
## Warning: Removed 1 rows containing non-finite values (`stat_ydensity()`).

# Ordonnez les génotypes dans l'ordre de la valeur de `cauline.leaf.num`

  filter(expt1, background=="Col" & fluctuation=="Con" & day.length==16) %>% 
  mutate(genotype = fct_reorder(genotype, cauline.leaf.num)) %>% 
  ggplot(aes(x=genotype, y=cauline.leaf.num, fill=factor(temperature))) +
  geom_violin()
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `genotype = fct_reorder(genotype, cauline.leaf.num)`.
## Caused by warning:
## ! `fct_reorder()` removing 1 missing value.
## ℹ Use `.na_rm = TRUE` to silence this message.
## ℹ Use `.na_rm = FALSE` to preserve NAs.
## Removed 1 rows containing non-finite values (`stat_ydensity()`).