Dans cette partie du cours vous allez mettre en pratique ce que vous avez vu et apprendre de nouvelles fonction pour ajouter des informations à des graphiques. Ajouter des informations sur les données ou personnaliser un graphique sont parfois essentiel pour bien faire ressortir le message d’un graphique.
Aujourd’hui nous allons voir comment:
Ajouter des statistiques descriptives à des graphiques
Changer l’ordre des catégories dans un graphique
Tout d’abord, créez un nouveau Rmarkdown, sauvez le dans session5_rmarkdown
et préparez votre environnement de travail:
# Chargez la librairie `tidyverse`
# Pas besoin de spécifier le repertoire de travail car il s'agit de celui du Rmarkdown
# Importer `burghardt_et_al_2015_expt1.txt` et mettez le dans un objet appelé `expt1`
group_by()
et summarise()
Parfois nous voulons résumer nos données dans une table plus petite et en extraire des statistiques descriptives (moyenne, médiane, nombre d’observations …).
Ce type d’opération peut être fait avec la combinaison de deux fonctions: group_by()
et summarise()
.
Notez que group_by()
ne change pas le format de la table de données. Cette fonction liste des lignes qui doivent être groupées. Nous pouvons ensuite utiliser summarise()
pour extraire des statistiques descriptives de chaque groupe.
Par exemple, nous pouvons extraire la moyenne pour le temps de floraison de chaque génotype:
group_by(expt1, genotype) %>%
summarise(mean.days.to.flower = mean(days.to.flower, na.rm = TRUE))
## `summarise()` ungrouping output (override with `.groups` argument)
## # A tibble: 10 x 2
## genotype mean.days.to.flower
## <chr> <dbl>
## 1 Col Ama 55.8
## 2 Col FRI 70.2
## 3 fca-6 70.4
## 4 flc-3 FRI 53.1
## 5 flk-1 77.6
## 6 fve-3 81.2
## 7 ld-1 89.8
## 8 Ler-1 55.6
## 9 prmt5 FRI 88.7
## 10 vin3-4 FRI 95.7
L’output contient deux colonnes:
genotype
qui est la colonne qui a servi à grouper les données
mean.days.to.flower
qui est la colonne crée par la fonction summarise
Il n’y a que 10 lignes dans cette table, une par génotype.
Il est possible de grouper les données par plus d’une variable.
Par exemple nous pouvons mesurer la moyenne, la médiane et l’écart type pour chaque génotype aux différentes températures:
group_by(expt1, genotype, temperature) %>%
summarise(mean.days.flower = mean(days.to.flower, na.rm = TRUE),
sd.days.flower = sd(days.to.flower, na.rm = TRUE),
median.days.flower = median(days.to.flower, na.rm = TRUE))
## `summarise()` regrouping output by 'genotype' (override with `.groups` argument)
## # A tibble: 20 x 5
## # Groups: genotype [10]
## genotype temperature mean.days.flower sd.days.flower median.days.flower
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 Col Ama 12 66.6 25.5 62
## 2 Col Ama 22 46.0 20.5 51
## 3 Col FRI 12 81.1 26.2 80
## 4 Col FRI 22 57.8 25.9 59.5
## 5 fca-6 12 76.2 20.9 72.5
## 6 fca-6 22 63.9 34.6 40
## 7 flc-3 FRI 12 64.7 25.2 46
## 8 flc-3 FRI 22 43 17.5 50
## 9 flk-1 12 87.8 27.9 87
## 10 flk-1 22 61.2 29.2 47
## 11 fve-3 12 96.1 26.3 92
## 12 fve-3 22 51.5 5.96 49
## 13 ld-1 12 99.8 27.8 100
## 14 ld-1 22 72.9 36.5 60
## 15 Ler-1 12 67.4 22.7 64
## 16 Ler-1 22 45.2 18.3 51.5
## 17 prmt5 FRI 12 103. 22.0 102
## 18 prmt5 FRI 22 67.2 26.6 62
## 19 vin3-4 FRI 12 111. 40.0 83
## 20 vin3-4 FRI 22 72.5 29.7 69
Il y a maintenant 20 lignes dans la table, car chaque génotype apparaît deux fois (12 et 22 degrés)
Une autre information utile que nous pouvons extraire est le nombre d’observation pour chaque groupe. Pour cela nous devons utiliser la fonction n()
, dans summarise()
qui compte le nombre de ligne pour chaque groupe.
Par exemple, pour connaitre le nombre d’observations pour chaque génotype:
group_by(expt1, genotype) %>%
summarise(n.obs = n())
## `summarise()` ungrouping output (override with `.groups` argument)
## # A tibble: 10 x 2
## genotype n.obs
## <chr> <int>
## 1 Col Ama 135
## 2 Col FRI 128
## 3 fca-6 64
## 4 flc-3 FRI 136
## 5 flk-1 60
## 6 fve-3 60
## 7 ld-1 60
## 8 Ler-1 68
## 9 prmt5 FRI 125
## 10 vin3-4 FRI 121
Attention, n()
ne peut être utilisé que dans la fonction summarise()
. Il existe une autre fonction, count()
qui permet de faire la même chose sans avoir besoin d’utiliser group_by()
et summarise()
:
count(expt1, genotype)
## # A tibble: 10 x 2
## genotype n
## <chr> <int>
## 1 Col Ama 135
## 2 Col FRI 128
## 3 fca-6 64
## 4 flc-3 FRI 136
## 5 flk-1 60
## 6 fve-3 60
## 7 ld-1 60
## 8 Ler-1 68
## 9 prmt5 FRI 125
## 10 vin3-4 FRI 121
Attention: Quand vous utilisez la fonction group_by()
, les lignes du tableau restent groupées en fonction de la variable utilisée. Les opérations suivantes vont utiliser ces groupes, ce qui peut poser problème. Pensez à utiliser la fonction ungroup()
pour enlever les groupes quand vous avez fini avec group_by()
et summarise()
Exercice 1:
Calculez la médiane et l’écart-type de
blade.length.mm
ettotal.leaf.length.mm
pour chaquegenotype
aux différentesday.length
. Ajoutez aussi le nombre d’observations de chaque groupe
Maintenant que nous savons extraire des statistiques descriptives de nos données, nous pouvons les utiliser pour faire des graphiques.
Par exemple, faisont un graphique avec la moyenne et la médiane du temps de floraison pour les différents génotypes:
group_by(expt1, genotype) %>%
summarise(mean.days.flower = mean(days.to.flower, na.rm = TRUE),
sd.days.flower = sd(days.to.flower, na.rm = TRUE),
median.days.flower = median(days.to.flower, na.rm = TRUE)) %>%
gather(key="stat_type",value="stat_days_to_flower", mean.days.flower,median.days.flower) %>%
ggplot(aes(x=stat_type,y=stat_days_to_flower, col=genotype))+
geom_point(size=2)
## `summarise()` ungrouping output (override with `.groups` argument)
Afin de voir le lien entre la moyenne et la médiane pour chaque génotype, nous pouvons ajouter une ligne les reliant avec geom_line
. Attention pour cela nous devons ajouter dans aes()
la variable par laquelle les points sont regroupés en utilisant group=
group_by(expt1, genotype) %>%
summarise(mean.days.flower = mean(days.to.flower, na.rm = TRUE),
sd.days.flower = sd(days.to.flower, na.rm = TRUE),
median.days.flower = median(days.to.flower, na.rm = TRUE)) %>%
gather(key="stat_type",value="stat_days_to_flower", mean.days.flower,median.days.flower) %>%
ggplot(aes(x=stat_type,y=stat_days_to_flower, col=genotype))+
geom_point(size=2) +
geom_line(aes(group=genotype))
## `summarise()` ungrouping output (override with `.groups` argument)
Une autre possibilité est d’ajouter les statistiques descriptives à un graphique contenant les données.
Pour cela, nous devons:
Utiliser group_by()
et summarise()
pour extraire les statistiques descriptives
Utiliser une fonction de la famille *_join()
pour les combiner avec nos données
Nous pouvons maintenant faire un graphique contenant les données et les statistiques descriptives.
Par exemple, prenons ce boxplot:
ggplot( expt1, aes(genotype, rosette.leaf.num)) +
geom_boxplot()
## Warning: Removed 95 rows containing non-finite values (stat_boxplot).
Si nous voulons y ajouter le nombre d’observations pour chaque groupe, nous utilisons le script suivant:
group_by(expt1, genotype) %>%
summarise(n.obs=n()) %>%
mutate(n.obs=paste("n =",n.obs)) %>%
full_join(expt1, by="genotype") %>%
ggplot( aes(genotype, rosette.leaf.num)) +
geom_boxplot() +
geom_text(aes(label=n.obs, x=genotype, y=0))
## `summarise()` ungrouping output (override with `.groups` argument)
## Warning: Removed 95 rows containing non-finite values (stat_boxplot).
Exercice 2
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 groupeExportez et sauvez le graphique obtenu au format
jpg
BONUS Lisez la partie du cours sur les facteurs (que nous n’aurons pas le temps de traiter) et faites l’exercice 3.
Avec cette même méthode il est aussi possible d’ajouter des informations pour des groupes formés à partir de deux variables.
Par exemple, si nous voulons faire un boxplot rosette.leaf.num
pour chaque génotype en fonction de la température et y ajouter le nombre d’observations des différents groupes, nous utilisons le script suivant:
group_by(expt1, genotype, fluctuation) %>%
summarise(n.obs=n()) %>%
mutate(n.obs=paste("n =",n.obs)) %>%
full_join(expt1, by=c("genotype", "fluctuation")) %>%
ggplot( aes(genotype, rosette.leaf.num, fill=fluctuation)) +
geom_boxplot() +
geom_text(aes(label=n.obs, x=genotype, y=-2),position=position_dodge(0.8), angle=45)
## `summarise()` regrouping output by 'genotype' (override with `.groups` argument)
## Warning: Removed 95 rows containing non-finite values (stat_boxplot).
facteurs
Par défaut, les catégories dans un graphique sont ordonnées alphabétiquement. Bien souvent ce n’est pas l’ordre que nous voulons.
Par exemple, essayons de reproduire le graphique suivant:
filter(expt1, temperature==22, day.length==16) %>%
ggplot(aes(x=genotype, y=days.to.bolt, fill=fluctuation)) +
geom_boxplot()
Les génotypes ne sont pas dans le même ordre car ggplot a utilisé l’ordre alphabétique, même s’ils n’étaient pas dans cet ordre dans le tableau.
Afin de changer l’ordre nous devons utiliser un autre type de variable, les facteurs. Les facteurs sont des variables spéciales de type caractère pour lesquels nous pouvons définir des niveaux ( levels ), c’est à dire les modalités prédéfinies de cette variable. Ces niveaux sont les valeurs uniques de la variable auxquelles un ordre peut être attaché.
Nous pouvons convertir une variable en facteurs en utilisant la fonction factor()
:
# Convertissons genotype dans expt1 en facteurs:
factor(expt1$genotype)
## [1] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [7] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [13] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [19] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [25] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [31] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [37] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [43] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [49] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [55] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [61] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [67] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [73] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [79] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [85] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [91] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [97] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [103] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [109] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [115] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [121] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [127] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [133] Col Ama Col Ama Col Ama Col FRI Col FRI Col FRI
## [139] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [145] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [151] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [157] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [163] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [169] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [175] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [181] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [187] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [193] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [199] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [205] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [211] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [217] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [223] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [229] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [235] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [241] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [247] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [253] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [259] Col FRI Col FRI Col FRI Col FRI Col FRI fca-6
## [265] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [271] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [277] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [283] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [289] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [295] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [301] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [307] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [313] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [319] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [325] fca-6 fca-6 fca-6 flc-3 FRI flc-3 FRI flc-3 FRI
## [331] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [337] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [343] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [349] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [355] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [361] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [367] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [373] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [379] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [385] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [391] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [397] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [403] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [409] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [415] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [421] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [427] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [433] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [439] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [445] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [451] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [457] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [463] flc-3 FRI flk-1 flk-1 flk-1 flk-1 flk-1
## [469] flk-1 flk-1 flk-1 flk-1 flk-1 flk-1
## [475] flk-1 flk-1 flk-1 flk-1 flk-1 flk-1
## [481] flk-1 flk-1 flk-1 flk-1 flk-1 flk-1
## [487] flk-1 flk-1 flk-1 flk-1 flk-1 flk-1
## [493] flk-1 flk-1 flk-1 flk-1 flk-1 flk-1
## [499] flk-1 flk-1 flk-1 flk-1 flk-1 flk-1
## [505] flk-1 flk-1 flk-1 flk-1 flk-1 flk-1
## [511] flk-1 flk-1 flk-1 flk-1 flk-1 flk-1
## [517] flk-1 flk-1 flk-1 flk-1 flk-1 flk-1
## [523] flk-1 fve-3 fve-3 fve-3 fve-3 fve-3
## [529] fve-3 fve-3 fve-3 fve-3 fve-3 fve-3
## [535] fve-3 fve-3 fve-3 fve-3 fve-3 fve-3
## [541] fve-3 fve-3 fve-3 fve-3 fve-3 fve-3
## [547] fve-3 fve-3 fve-3 fve-3 fve-3 fve-3
## [553] fve-3 fve-3 fve-3 fve-3 fve-3 fve-3
## [559] fve-3 fve-3 fve-3 fve-3 fve-3 fve-3
## [565] fve-3 fve-3 fve-3 fve-3 fve-3 fve-3
## [571] fve-3 fve-3 fve-3 fve-3 fve-3 fve-3
## [577] fve-3 fve-3 fve-3 fve-3 fve-3 fve-3
## [583] fve-3 ld-1 ld-1 ld-1 ld-1 ld-1
## [589] ld-1 ld-1 ld-1 ld-1 ld-1 ld-1
## [595] ld-1 ld-1 ld-1 ld-1 ld-1 ld-1
## [601] ld-1 ld-1 ld-1 ld-1 ld-1 ld-1
## [607] ld-1 ld-1 ld-1 ld-1 ld-1 ld-1
## [613] ld-1 ld-1 ld-1 ld-1 ld-1 ld-1
## [619] ld-1 ld-1 ld-1 ld-1 ld-1 ld-1
## [625] ld-1 ld-1 ld-1 ld-1 ld-1 ld-1
## [631] ld-1 ld-1 ld-1 ld-1 ld-1 ld-1
## [637] ld-1 ld-1 ld-1 ld-1 ld-1 ld-1
## [643] ld-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [649] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [655] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [661] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [667] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [673] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [679] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [685] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [691] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [697] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [703] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [709] Ler-1 Ler-1 Ler-1 prmt5 FRI prmt5 FRI prmt5 FRI
## [715] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [721] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [727] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [733] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [739] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [745] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [751] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [757] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [763] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [769] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [775] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [781] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [787] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [793] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [799] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [805] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [811] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [817] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [823] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [829] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [835] prmt5 FRI prmt5 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [841] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [847] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [853] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [859] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [865] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [871] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [877] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [883] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [889] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [895] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [901] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [907] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [913] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [919] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [925] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [931] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [937] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [943] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [949] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [955] vin3-4 FRI vin3-4 FRI vin3-4 FRI
## 10 Levels: Col Ama Col FRI fca-6 flc-3 FRI flk-1 fve-3 ld-1 Ler-1 ... vin3-4 FRI
Nous pouvons voir qu’il y a 10 niveaux, correspondant à chacun des génotypes, et qu’ils sont par ordre alphabétique.
Nous pouvons spécifier l’ordre des niveaux dans la fonction:
factor(expt1$genotype, levels = c("Ler-1", "fca-6", "Col Ama", "flc-3 FRI", "Col FRI", "ld-1", "flk-1",
"fve-3", "prmt5 FRI","vin3-4 FRI"))
## [1] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [7] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [13] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [19] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [25] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [31] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [37] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [43] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [49] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [55] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [61] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [67] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [73] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [79] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [85] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [91] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [97] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [103] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [109] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [115] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [121] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [127] Col Ama Col Ama Col Ama Col Ama Col Ama Col Ama
## [133] Col Ama Col Ama Col Ama Col FRI Col FRI Col FRI
## [139] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [145] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [151] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [157] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [163] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [169] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [175] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [181] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [187] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [193] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [199] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [205] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [211] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [217] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [223] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [229] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [235] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [241] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [247] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [253] Col FRI Col FRI Col FRI Col FRI Col FRI Col FRI
## [259] Col FRI Col FRI Col FRI Col FRI Col FRI fca-6
## [265] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [271] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [277] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [283] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [289] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [295] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [301] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [307] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [313] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [319] fca-6 fca-6 fca-6 fca-6 fca-6 fca-6
## [325] fca-6 fca-6 fca-6 flc-3 FRI flc-3 FRI flc-3 FRI
## [331] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [337] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [343] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [349] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [355] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [361] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [367] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [373] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [379] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [385] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [391] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [397] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [403] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [409] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [415] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [421] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [427] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [433] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [439] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [445] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [451] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [457] flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI flc-3 FRI
## [463] flc-3 FRI flk-1 flk-1 flk-1 flk-1 flk-1
## [469] flk-1 flk-1 flk-1 flk-1 flk-1 flk-1
## [475] flk-1 flk-1 flk-1 flk-1 flk-1 flk-1
## [481] flk-1 flk-1 flk-1 flk-1 flk-1 flk-1
## [487] flk-1 flk-1 flk-1 flk-1 flk-1 flk-1
## [493] flk-1 flk-1 flk-1 flk-1 flk-1 flk-1
## [499] flk-1 flk-1 flk-1 flk-1 flk-1 flk-1
## [505] flk-1 flk-1 flk-1 flk-1 flk-1 flk-1
## [511] flk-1 flk-1 flk-1 flk-1 flk-1 flk-1
## [517] flk-1 flk-1 flk-1 flk-1 flk-1 flk-1
## [523] flk-1 fve-3 fve-3 fve-3 fve-3 fve-3
## [529] fve-3 fve-3 fve-3 fve-3 fve-3 fve-3
## [535] fve-3 fve-3 fve-3 fve-3 fve-3 fve-3
## [541] fve-3 fve-3 fve-3 fve-3 fve-3 fve-3
## [547] fve-3 fve-3 fve-3 fve-3 fve-3 fve-3
## [553] fve-3 fve-3 fve-3 fve-3 fve-3 fve-3
## [559] fve-3 fve-3 fve-3 fve-3 fve-3 fve-3
## [565] fve-3 fve-3 fve-3 fve-3 fve-3 fve-3
## [571] fve-3 fve-3 fve-3 fve-3 fve-3 fve-3
## [577] fve-3 fve-3 fve-3 fve-3 fve-3 fve-3
## [583] fve-3 ld-1 ld-1 ld-1 ld-1 ld-1
## [589] ld-1 ld-1 ld-1 ld-1 ld-1 ld-1
## [595] ld-1 ld-1 ld-1 ld-1 ld-1 ld-1
## [601] ld-1 ld-1 ld-1 ld-1 ld-1 ld-1
## [607] ld-1 ld-1 ld-1 ld-1 ld-1 ld-1
## [613] ld-1 ld-1 ld-1 ld-1 ld-1 ld-1
## [619] ld-1 ld-1 ld-1 ld-1 ld-1 ld-1
## [625] ld-1 ld-1 ld-1 ld-1 ld-1 ld-1
## [631] ld-1 ld-1 ld-1 ld-1 ld-1 ld-1
## [637] ld-1 ld-1 ld-1 ld-1 ld-1 ld-1
## [643] ld-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [649] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [655] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [661] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [667] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [673] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [679] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [685] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [691] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [697] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [703] Ler-1 Ler-1 Ler-1 Ler-1 Ler-1 Ler-1
## [709] Ler-1 Ler-1 Ler-1 prmt5 FRI prmt5 FRI prmt5 FRI
## [715] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [721] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [727] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [733] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [739] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [745] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [751] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [757] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [763] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [769] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [775] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [781] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [787] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [793] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [799] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [805] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [811] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [817] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [823] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [829] prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI prmt5 FRI
## [835] prmt5 FRI prmt5 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [841] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [847] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [853] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [859] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [865] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [871] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [877] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [883] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [889] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [895] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [901] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [907] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [913] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [919] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [925] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [931] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [937] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [943] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [949] vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI vin3-4 FRI
## [955] vin3-4 FRI vin3-4 FRI vin3-4 FRI
## 10 Levels: Ler-1 fca-6 Col Ama flc-3 FRI Col FRI ld-1 flk-1 fve-3 ... vin3-4 FRI
Maintenant que nous avons converti la variable ne facteur avec l’ordre des niveaux que nous voulons, nous pouvons l’utiliser pour représenter les variables catégoriques avec l’ordre que nous voulons dans un graphique:
mutate(expt1, genotype = factor(genotype, levels = c("Ler-1", "fca-6", "Col Ama", "flc-3 FRI", "Col FRI",
"ld-1", "flk-1", "fve-3", "prmt5 FRI","vin3-4 FRI"))) %>%
filter( temperature==22, day.length==16) %>%
ggplot(aes(x=genotype, y=days.to.bolt, fill=fluctuation)) +
geom_boxplot()
Nous pouvons aussi ordonner les génotypes en fonction de days.to.bolt
. Pour cela nous utilisons la fonction fct_reorder()
dans le package forcats
(qui est inclus dans tidyverse
)
filter(expt1, temperature==22, day.length==16) %>%
mutate( genotype = fct_reorder(genotype, days.to.bolt)) %>%
ggplot(aes(x=genotype, y=days.to.bolt, fill=fluctuation)) +
geom_boxplot()
Exercice 3
Représenter des violin plots 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
Reprenons le premier graphique extrait de Burghard et al 2015 que vous avez reproduit à la fin de la séance 2
Mise en pratique
En utilisant les règles de bonne pratique pour des graphiques que nous avons vu lors de la séance 3, discutez en groupes des améliorations possibles de ce graphique.
Ensuite, en utilisant les outils que vous avez vus ces dernières semaines, effectuez ces changements.
Rappel: utilisez
filter()
pour sélectionner une partie des données,mutate()
pour ajouter ou changer des colonnes, une fonction de la famille*_join()
pour combiner deux tableaux et la combinaison degroup_by()
etsummarise()
pour extraire des statistiques descriptives. N’oubliez pas d’utiliser des pipes (%>%
) pour faire des chaines de commandes
La semaine prochaine nous allons faire un examen blanc, vous demandant d’explorer un jeu de donnée. Il s’agira d’une mise en pratique des fonctions que nous avons vu jusqu’ici. Vous devrez écrire l’ensemble dans un format Rmarkdown.
Afin de vous y préparer, nous vous recommandons de reprendre l’ensemble des cours et de vous exercer à refaire les exercices (sans avoir recours aux solutions si possible). Le tout en format Rmarkdown
Lors de l’examen blanc (et de l’examen final) vous aurez accès au cours et à vos scripts. Vous allez être évalué sur votre capacité à utiliser les différentes fonctions et à comprendre leur utilité, et non sur de la connaissance pure.