From 4d8dc449fb6b23dca702227009bf2333a3873bae Mon Sep 17 00:00:00 2001 From: Antoine Neuraz <5528070+aneuraz@users.noreply.github.com> Date: Fri, 28 Jun 2019 15:11:11 +0200 Subject: [PATCH] continued --- 98-techniques_avancees.Rmd | 82 +++++++++++++++++++++++++++++++++++--- index.Rmd | 12 +++++- packages.bib | 32 ++++++++++++++- 3 files changed, 117 insertions(+), 9 deletions(-) diff --git a/98-techniques_avancees.Rmd b/98-techniques_avancees.Rmd index 4f65641..9d3d343 100644 --- a/98-techniques_avancees.Rmd +++ b/98-techniques_avancees.Rmd @@ -169,8 +169,7 @@ p <- generate_uniform_dataset( ggplot(data = ., aes( x = x, y = y, color = group)) + geom_point(size = 3) + scale_color_material_d() + - labs(title= "theme_minimal()", - x="legende axe x", + labs(x="legende axe x", y="legende axe y") ``` @@ -179,13 +178,86 @@ p ``` ```{r, echo=TRUE} -p + theme_minimal() +p + theme_minimal() + labs(title= "theme_minimal") ``` ```{r, echo=TRUE} -p + my_theme() +p + my_theme() + labs(title= "my_theme") ``` ```{r,echo=TRUE} -p + my_theme_dark() +p + my_theme_dark() + labs(title= "my_theme_dark") ``` + + +## Utiliser `ggplot2` dans des fonctions + +Pour utiliser les syntaxes décrites ici, vous aurez besoin de ggplot2 version >= 3.2. + +Prenons l'exemple d'une fonction qui réalise un bar chart (diagramme en barres) pour une colonne données (par exemple `drv`) d'un dataset (par exemple `mpg`, fourni avec `ggplot2`) + +Le code pour réaliser ce plot en dehors d'une fonction peut ressembler à ceci : + +```{r} +ggplot(mpg) + + geom_bar(aes(x = drv)) +``` + +Dans une fonction, nous voudrions pouvoir utiliser un autre dataset et changer le nom de la variable d'intérêt. + +Modifier le nom du dataset ne pose pas de problème, et l'on peut utiliser une syntaxe classique : + +```{r, eval = FALSE} + +my_bar <- function(df) { + ggplot(df) + + geom_bar(aes(x = drv)) +} + +my_bar(mpg) + +``` + +Pour rendre modifiable le nom de la colonne, c'est à dire une variable qui est déclarée dans la fonction `aes()`, c'est moins immédiat. L'exemple suivant ne fonctionnera pas : + +```{r, eval = FALSE} + +my_bar <- function(df, col) { + ggplot(df) + + geom_bar(aes(x = col)) +} + +my_bar(mpg, drv) + +``` +``` +Erreur : Aesthetics must be valid data columns. Problematic aesthetic(s): x = var. Did you mistype the name of a data column or forget to add stat()? +``` + +Pour résoudre ce problème, il faut utiliser une syntaxe particulière introduite dans la version 3.2 de ggplot2. +Vous avez 2 solutions: +- le nom de la colonne est passé en paramètre de la fonction comme un nom (c'est à dire sans "", par exemple `drv`), vous devez encadrer le nom de la colonne par des doubles accolades : `{{ col }}` + +```{r, eval = FALSE} +my_bar <- function(df, col) { + ggplot(df) + + geom_bar(aes(x = {{ col }})) +} + +my_bar(mpg, drv) +``` + + +- le nom de la colonne est passé en paramètre de la fonction comme une chaine de caractère (par exemple: `"drv"`), vous devez utiliser la syntaxe suivante: `.data[[ col ]]` + +```{r, eval = FALSE} +my_bar <- function(df, col) { + ggplot(df) + + geom_bar(aes(x = .data[[ col ]] )) +} + +my_bar(mpg, "drv") +``` + + + diff --git a/index.Rmd b/index.Rmd index 61c2048..4d7d145 100644 --- a/index.Rmd +++ b/index.Rmd @@ -35,10 +35,18 @@ Dans ce cours, un certain nombre de packages sont utilisés très fréquement et pkg_list_req = c("tidyverse", "ggplot2", - "see") + "see", + "igraph", + "ggraph", + "tidygraph", + "rlang") ``` ```{r, eval=FALSE} -install.packages(pkg_list_req) + +for (pkg in pkg_list_req) { + if (!(pkg %in% installed.packages())) install.packages(pkg) +} + ``` Un certain nombre d'autres packages, utilisés plus ponctuellement vous seront indiqués dans les différents chapitres. Voici une liste exhaustive des packages utilisés dans ce cours : diff --git a/packages.bib b/packages.bib index 44edfed..fad544c 100644 --- a/packages.bib +++ b/packages.bib @@ -8,11 +8,32 @@ } @Manual{R-ggplot2, title = {ggplot2: Create Elegant Data Visualisations Using the Grammar of Graphics}, - author = {Hadley Wickham and Winston Chang and Lionel Henry and Thomas Lin Pedersen and Kohske Takahashi and Claus Wilke and Kara Woo}, + author = {Hadley Wickham and Winston Chang and Lionel Henry and Thomas Lin Pedersen and Kohske Takahashi and Claus Wilke and Kara Woo and Hiroaki Yutani}, year = {2019}, - note = {R package version 3.1.1}, + note = {R package version 3.2.0}, url = {https://CRAN.R-project.org/package=ggplot2}, } +@Manual{R-ggraph, + title = {ggraph: An Implementation of Grammar of Graphics for Graphs and Networks}, + author = {Thomas Lin Pedersen}, + year = {2018}, + note = {R package version 1.0.2}, + url = {https://CRAN.R-project.org/package=ggraph}, +} +@Manual{R-igraph, + title = {igraph: Network Analysis and Visualization}, + author = {See AUTHORS file.}, + year = {2019}, + note = {R package version 1.2.4.1}, + url = {https://CRAN.R-project.org/package=igraph}, +} +@Manual{R-rlang, + title = {rlang: Functions for Base Types and Core R and 'Tidyverse' Features}, + author = {Lionel Henry and Hadley Wickham}, + year = {2019}, + note = {R package version 0.4.0}, + url = {https://CRAN.R-project.org/package=rlang}, +} @Manual{R-see, title = {see: Visualisation Toolbox for 'easystats' and Extra Geoms, Themes and Color Palettes for 'ggplot2'}, @@ -21,6 +42,13 @@ and Color Palettes for 'ggplot2'}, note = {R package version 0.1.0}, url = {https://CRAN.R-project.org/package=see}, } +@Manual{R-tidygraph, + title = {tidygraph: A Tidy API for Graph Manipulation}, + author = {Thomas Lin Pedersen}, + year = {2018}, + note = {R package version 1.1.1}, + url = {https://CRAN.R-project.org/package=tidygraph}, +} @Manual{R-tidyverse, title = {tidyverse: Easily Install and Load the 'Tidyverse'}, author = {Hadley Wickham},