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
r_atelier3 [2018/10/02 16:49]
katherinehebert
r_atelier3 [2019/10/18 16:42]
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 présentation Prezi associée : [[http://prezi.com/c8w7zdbfv0ap/|Prezi]]+**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!) 
  
-Téléchargez le script R pour cet atelier ​: {{:atelier3.r|Script}}+//S'il vous plaît essayez-la et dites aux coordonnateurs des ateliers R ce que vous en pensez!// 
 + 
 +Lien vers l'​ancienne [[http://​prezi.com/​c8w7zdbfv0ap/​|présentation Prezi]] 
 + 
 + 
 +Téléchargez le [[https://​raw.githubusercontent.com/​QCBSRworkshops/​Workshops/​dev/​workshop03/​workshop03-en/​data/​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 69: 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 248: 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 502: 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//