Exercice 1:
- Utilisez la fonction
gather()
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.
gather(expt1, "trait", "length.mm", 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:
gather(expt1, "trait", "length.mm", 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()` regrouping output by 'genotype' (override with `.groups` argument)
## # A tibble: 20 x 7
## # Groups: genotype [10]
## genotype day.length mediane.blade.l… ecart.type.blad… mediane.total.l…
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 Col Ama 8 23.1 4.13 39.1
## 2 Col Ama 16 13.7 2.12 23
## 3 Col FRI 8 23.4 3.78 40.0
## 4 Col FRI 16 20.1 3.75 34
## 5 fca-6 8 22.4 5.28 34.8
## 6 fca-6 16 16.8 3.02 27.8
## 7 flc-3 F… 8 23.5 3.99 39.8
## 8 flc-3 F… 16 13.5 3.05 21.5
## 9 flk-1 8 23.2 9.75 39.1
## 10 flk-1 16 20.8 3.63 35.3
## 11 fve-3 8 20.5 3.12 37.9
## 12 fve-3 16 21.9 2.13 36.6
## 13 ld-1 8 24.4 4.12 37.2
## 14 ld-1 16 24.2 3.03 40.0
## 15 Ler-1 8 21.6 8.00 34.4
## 16 Ler-1 16 13.8 3.65 17.9
## 17 prmt5 F… 8 20.8 3.62 34.1
## 18 prmt5 F… 16 19.9 3.81 32.5
## 19 vin3-4 … 8 21.4 3.49 39.6
## 20 vin3-4 … 16 23.6 3.23 39.3
## # … with 2 more variables: ecart.type.total.leaf.length.mm <dbl>, n.obs <int>
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))
## `summarise()` ungrouping output (override with `.groups` argument)
## 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: Removed 1 rows containing non-finite values (stat_ydensity).