Exercice 1:
- Utilisez la fonction
pivot_longer()
pour restructurer le tableau afin de faire un boxplot deblade.length.mm
ettotal.leaf.length.mm
, coloré parfluctuation
.
- Ajoutez aux boxplots des encoches indiquant l’étendue de l’intervalle de confiance à 95% de la médiane (voir l’option
notch
dansgeom_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()`).
- 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
ettotal.leaf.length.mm
pour chaquegenotype
au différentesday.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 chaquegenotype
en fonction de s’ils ont subit ou non unevernalization
: La moyenne du ratio deblade.length.mm
ettotal.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 debackground
“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()`).