@@ -169,8 +169,7 @@ p <- generate_uniform_dataset( | |||||
ggplot(data = ., aes( x = x, y = y, color = group)) + | ggplot(data = ., aes( x = x, y = y, color = group)) + | ||||
geom_point(size = 3) + | geom_point(size = 3) + | ||||
scale_color_material_d() + | scale_color_material_d() + | ||||
labs(title= "theme_minimal()", | |||||
x="legende axe x", | |||||
labs(x="legende axe x", | |||||
y="legende axe y") | y="legende axe y") | ||||
``` | ``` | ||||
@@ -179,13 +178,86 @@ p | |||||
``` | ``` | ||||
```{r, echo=TRUE} | ```{r, echo=TRUE} | ||||
p + theme_minimal() | |||||
p + theme_minimal() + labs(title= "theme_minimal") | |||||
``` | ``` | ||||
```{r, echo=TRUE} | ```{r, echo=TRUE} | ||||
p + my_theme() | |||||
p + my_theme() + labs(title= "my_theme") | |||||
``` | ``` | ||||
```{r,echo=TRUE} | ```{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") | |||||
``` | |||||
@@ -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", | pkg_list_req = c("tidyverse", | ||||
"ggplot2", | "ggplot2", | ||||
"see") | |||||
"see", | |||||
"igraph", | |||||
"ggraph", | |||||
"tidygraph", | |||||
"rlang") | |||||
``` | ``` | ||||
```{r, eval=FALSE} | ```{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 : | 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 : | ||||
@@ -8,11 +8,32 @@ | |||||
} | } | ||||
@Manual{R-ggplot2, | @Manual{R-ggplot2, | ||||
title = {ggplot2: Create Elegant Data Visualisations Using the Grammar of Graphics}, | 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}, | year = {2019}, | ||||
note = {R package version 3.1.1}, | |||||
note = {R package version 3.2.0}, | |||||
url = {https://CRAN.R-project.org/package=ggplot2}, | 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, | @Manual{R-see, | ||||
title = {see: Visualisation Toolbox for 'easystats' and Extra Geoms, Themes | title = {see: Visualisation Toolbox for 'easystats' and Extra Geoms, Themes | ||||
and Color Palettes for 'ggplot2'}, | and Color Palettes for 'ggplot2'}, | ||||
@@ -21,6 +42,13 @@ and Color Palettes for 'ggplot2'}, | |||||
note = {R package version 0.1.0}, | note = {R package version 0.1.0}, | ||||
url = {https://CRAN.R-project.org/package=see}, | 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, | @Manual{R-tidyverse, | ||||
title = {tidyverse: Easily Install and Load the 'Tidyverse'}, | title = {tidyverse: Easily Install and Load the 'Tidyverse'}, | ||||
author = {Hadley Wickham}, | author = {Hadley Wickham}, | ||||