@@ -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") | |||
``` | |||
@@ -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 : | |||
@@ -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}, | |||