Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
r_atelier3 [2018/10/24 21:48]
mariehbrice [Atelier 3: Introduction à ggplot2, tidyr & dplyr]
r_atelier3 [2019/08/08 17:49]
mariehbrice [Atelier 3: Introduction à ggplot2]
Line 6: Line 6:
  
 //Le contenu de cet atelier a été révisé par plusieurs membres du CSBQ. Si vous souhaitez y apporter des modifications,​ veuillez SVP contacter les coordonnateurs actuels de la série, listés sur la page d'​accueil//​ //Le contenu de cet atelier a été révisé par plusieurs membres du CSBQ. Si vous souhaitez y apporter des modifications,​ veuillez SVP contacter les coordonnateurs actuels de la série, listés sur la page d'​accueil//​
-====== Atelier 3: Introduction à ggplot2, tidyr & dplyr ======+====== Atelier 3: Introduction à ggplot2 ======
  
 Développé par : Xavier Giroux-Bougard,​ Maxwell Farrell, Amanda Winegardner,​ Étienne Low-Décarie,​ Monica Granados Développé par : Xavier Giroux-Bougard,​ Maxwell Farrell, Amanda Winegardner,​ Étienne Low-Décarie,​ Monica Granados
  
-**Résumé :** Pendant cet atelier, vous perfectionnerez vos compétences en visualisation et manipulation de jeux de données à laide de la bibliothèques ​ggplot2. ​D’abord, vous explorerez ​la richesse de ggplot2 comme solution de rechange ​aux outils graphiques de base dans R, soit en explorant vos données visuellement et en produisant ​des figures dignes de publications scientifiques. Cet atelier s’avérera utile non seulement pour les participants suivant notre série d’ateliers,​ mais également pour ceux et celles d’entre vous connaissant déjà le langage R et cherchant à maîtriser des outils plus avancés pour l'​analyse et la visualisation de vos données.+**Résumé :** Pendant cet atelier, vous perfectionnerez vos compétences en visualisation et manipulation de jeux de données à l'aide de la bibliothèque ''​ggplot2''​Nous explorerons toute la richesse de ''​ggplot2''​ qui peut être utilisé ​comme alternative ​aux outils graphiques de base dans R. Nous apprendrons comment exploiter les outils de cette bibliothèque à la fois pour explorer des données visuellement et pour produire ​des figures dignes de publications scientifiques. ​
  
-**Lien vers la nouvelle [[https://​qcbsrworkshops.github.io/Workshops/​workshop03/​workshop03-en/​workshop03-fr.html|présentation Rmarkdown]]** (en anglais seulement, la version française viendra sous peu!) +**Lien vers la nouvelle [[https://​qcbsrworkshops.github.io/​workshop03/​workshop03-en/​workshop03-en.html|présentation Rmarkdown]]** (en anglais seulement, la version française viendra sous peu!) 
  
 //S'il vous plaît essayez-la et dites aux coordonnateurs des ateliers R ce que vous en pensez!// //S'il vous plaît essayez-la et dites aux coordonnateurs des ateliers R ce que vous en pensez!//
Line 19: Line 19:
  
  
-Téléchargez le script R pour cet atelier ​: {{:atelier3.r|Script}}+Téléchargez le [[https://​raw.githubusercontent.com/​QCBSRworkshops/​Workshops/​dev/​workshop03/​workshop03-en/​script_workshop3.r|script R]] pour cet atelier.
 ===== 1. Tracer des graphiques avec R en utilisant la grammaire des graphiques (ggplot2) ===== ===== 1. Tracer des graphiques avec R en utilisant la grammaire des graphiques (ggplot2) =====
  
Line 74: Line 74:
 </​code>​ </​code>​
  
 +=== TEST ===
 {{ggplot2_1.png?​400 |}} {{ggplot2_1.png?​400 |}}
 +
  
 ==== Nuage de points (variables catégoriques) ==== ==== Nuage de points (variables catégoriques) ====
Line 253: Line 255:
 {{ggplot2_6.png?​400 |}} {{ggplot2_6.png?​400 |}}
  
-===== BONUS =====  
-Il est même possible d'​utiliser des émoticônes comme objets géométriques dans vos graphiques!!! Vous aurez tout simplement besoin du paquet ''​emojiGG''​ développé par David Lawrence Miller, disponibles depuis le répertoire GitHub: 
  
-<code rsplus | > 
-devtools::​install_github("​dill/​emoGG"​) 
-library(emoGG) 
-# vous devez faire une recherche 
-emoji_search("​bear"​) 
-830   bear 1f43b     ​animal 
-831   bear 1f43b     ​nature 
-832   bear 1f43b       wild 
- 
-ggplot(iris,​ aes(Sepal.Length,​ Sepal.Width,​ color = Species)) + 
-  geom_emoji(emoji="​1f337"​) 
-</​code>​ 
- 
-{{:​rplotbear.png?​400|}} 
- 
- 
----- 
 ===== ggplot2 - Défi #2 ===== ===== ggplot2 - Défi #2 =====
  
Line 507: Line 490:
  
 ---- ----
- 
-===== 2.6 Combiner ggplot2 avec tidyr ===== 
- 
-==== Exemple montrant comment utiliser les formats long et large avec le jeu de données "​airquality"​ ==== 
- 
-<code rsplus | > 
-head(airquality) 
-  
- Ozone Solar.R Wind Temp Month Day 
-1    41     ​190 ​ 7.4   ​67 ​    ​5 ​  1 
-2    36     ​118 ​ 8.0   ​72 ​    ​5 ​  2 
-3    12     149 12.6   ​74 ​    ​5 ​  3 
-4    18     313 11.5   ​62 ​    ​5 ​  4 
-5    NA      NA 14.3   ​56 ​    ​5 ​  5 
-6    28      NA 14.9   ​66 ​    ​5 ​  6 
-</​code>​ 
-Le jeu de données est en format large où chaque variable mesurée (ozone, solar.r, wind and temp) ont leur propre colonne. 
- 
- 
-=== Diagrammes de diagnostic avec un format large et ggplot2 === 
- 
-**1:​** ​ Visualisez l'​étendue de chaque variable mesurée en fonction du mois. 
- 
-<code rsplus | > 
-fMonth <- factor(airquality$Month) # Convertit la variable "​Month"​ en facteur.  ​ 
-ozone.box <- ggplot(airquality,​ aes(x = fMonth, y = Ozone)) + geom_boxplot() 
-solar.box <- ggplot(airquality,​ aes(x = fMonth, y = Solar.R)) + geom_boxplot() 
-temp.box ​ <- ggplot(airquality,​ aes(x = fMonth, y = Temp)) + geom_boxplot() 
-wind.box ​ <- ggplot(airquality,​ aes(x = fMonth, y = Wind)) + geom_boxplot() 
-</​code>​ 
- 
-Vous pouvez utiliser la fonction ''​grid.arrange()''​ du paquet ''​gridExtra''​ pour regrouper tous ces diagrammes en une seule figure : 
-<code rsplus | > 
-combo.box <- grid.arrange(ozone.box,​ solar.box, temp.box, wind.box, nrow = 2)  
-# nrow = argument spécifiant le nombre de lignes sur lesquelles les diagrammes seront affichés. 
-</​code>​ 
- 
-On obtient quatre diagrammes distincts sur un seul panneau. ​ 
-Prenez note que l'axe des y est différent pour chaque variable :  
- 
-{{::​airquality_grid.png?​nolink|600}} 
- 
- 
-**2.** On peut faire la même chose, mais en représentant les variables en fonction du jour pour chaque mois séparément : 
- 
-<code rsplus | > 
-ozone.graph <- ggplot(airquality,​ aes(x = Day, y = Ozone)) + 
-    geom_point() + 
-    geom_smooth() + 
-    facet_wrap(~ Month, nrow = 2) 
- 
-solar.graph <- ggplot(airquality,​ aes(x = Day, y = Solar.R)) + 
-    geom_point() + 
-    geom_smooth() +  
-    facet_wrap(~ Month, nrow = 2) 
- 
-wind.graph <- ggplot(airquality,​ aes(x = Day, y = Wind)) + 
-    geom_point() + 
-    geom_smooth() +  
-    facet_wrap(~ Month, nrow = 2) 
- 
-temp.graph <- ggplot(airquality,​ aes(x = Day, y = Temp)) + 
-    geom_point() +  
-    geom_smooth() +  
-    facet_wrap(~ Month, nrow = 2) 
-</​code>​ 
- 
-On peut également regrouper tous ces diagrammes (même si ce n'est pas très joli pour le moment !) : 
-<code rsplus | > 
-combo.facets <- grid.arrange(ozone.graph,​ solar.graph,​ wind.graph, temp.graph, nrow = 4) 
-</​code>​ 
- 
-{{::​airquality_faceted.png?​nolink|}} 
- 
-//MAIS//, comment faire pour utiliser la fonction ''​facet_wrap()''​ avec des variables mesurées au lieu des variables "​Month"​ et "​Day"​ ?  
- 
-**Il faut réorganiser les données en format long !** 
-//(Voir la section 2.3)// ​ 
- 
-<code rsplus | > 
-air.long <- gather(airquality,​ variable, value, -Month, -Day) 
-air.large <- spread(air.long , variable, value) 
-</​code>​ 
- 
-Utilisez air.long: 
-<code rsplus | > 
-fMonth.long <- factor(air.long$Month) 
-meteo <- ggplot(air.long,​ aes(x = fMonth.long,​ y = value)) + 
-    geom_boxplot() +  
-    facet_wrap(~ variable, nrow = 2) 
-meteo 
-</​code>​ 
- 
-Comparez les diagrammes ''​meteo''​ avec ceux de ''​combo.box''​ : 
- 
-{{::​weather_plot.png?​nolink|600}} 
- 
-Dans chacun des cas, on a utilisé les mêmes données, mais les graphiques sont légèrement différents. 
- 
-Les variables de l'​objet ''​meteo''​ sont sur la même échelle en utilisant la fonction ''​facet_wrap()''​. 
-Ça peut être utile dans plusieurs circonstances,​ mais ça ne permet pas de voir toute la variation de la variable "​Wind"​. 
-  
-Dans ce cas, on peut modifier le script pour permettre à R de déterminer l'​échelle pour chaque variable avec l'​argument ''​scales''​ : 
-<code rsplus | > 
-meteo <- meteo + facet_wrap(~ variable, nrow = 2, scales = "​free"​) 
-meteo 
-</​code>​ 
- 
-{{::​weather_scaled_free.png?​nolink|600}} 
- 
-On peut aussi utiliser le format long pour créer un graphique qui inclut **toutes les variables sur un seul graphique** : 
-<code rsplus | > 
-meteo2 <- ggplot(air.long,​ aes(x = Day, y = value, colour = variable)) + 
-    geom_point() +  
-    facet_wrap(~ Month, nrow = 1) 
-meteo2 
-</​code>​ 
- 
-{{::​weather2.png?​nolink|}} 
  
  
 ===== 4. Ressources supplémentaires ===== ===== 4. Ressources supplémentaires =====
  
-Voici quelques ressources intéressantes pour continuer votre apprentissage ​des paquets ​''​ggplot2'',​ ''​tidyr''​ et ''​dplyr''​. On s'en est d'​ailleurs servi comme inspiration pour la matériel couvert aujourd'​hui :+Voici quelques ressources intéressantes pour continuer votre apprentissage ​du paquet ​''​ggplot2''​. On s'en est d'​ailleurs servi comme inspiration pour la matériel couvert aujourd'​hui :
  
 //ggplot2// //ggplot2//