-
Notifications
You must be signed in to change notification settings - Fork 4
/
07-les-themes.Rmd
224 lines (161 loc) · 7.92 KB
/
07-les-themes.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# Les thèmes
Les thèmes ggplot2 vous permettent de modifier l'apparence de vos graphiques. Derrière l'apparence, on désigne tout ce qui n'est pas relatif aux données, comme les polices de caractère, les grilles, l'arrière plan :
- Quelle police de caractère pour le titre du graphique ? Pour le titre de l'axe des x ?
- Quelle taille de police ?
- Quelle couleur pour l'arrière plan ?
- Quel type de ligne pour les grilles ?
Il existe des [thèmes prédéfinis](http://ggplot2.tidyverse.org/reference/index.html#section-themes) dans `ggplot` que l'on peut déjà utiliser.
Par exemple : `theme_classic()`, `theme_bw()`, `theme_dark()`, ...
Des packages externes permettent d'enrichir cette collection de thèmes, par exemple `ggthemes` ou `hrbrthemes`.
Lorsque l'on souhaite garder une cohérence entre plusieurs graphiques, le mieux est d'en définir un à part pour l'appeler ensuite.
La fonction de `{ggplot2}` qui vous permet de modifier le thème par défaut est la fonction `[theme()](http://ggplot2.tidyverse.org/reference/theme.html)`. Chaque élément va ensuite pouvoir être modifié finement.
Ce schéma de [Heny Wang](https://henrywang.nl/ggplot2-theme-elements-demonstration/) permet de bien synthétiser l'ensemble des éléments thémables.
]
```{r, echo = FALSE, out.height='450px',out.width='600px',}
knitr::include_graphics("images/theme.png")
```
Voir l'aide de la fonction `theme()` et ses nombreux arguments sur le [site de présentation du package ggplot2](https://ggplot2.tidyverse.org/reference/theme.html).
Et nous allons ci dessous le détailler.
## Les fonctions "element"
Elle utilise 4 types de fonctions :
- ***element_text()*** : pour toutes les étiquettes
PARAMÈTRE | VALEUR
----------| --------
family | la famille de la police
face | le type de police ("plain", "italic", "bold", "bold.italic")
colour | couleur
size | taille en points
hjust | justification horizontale, dans [0, 1]
vjust | justification verticale, dans [0, 1]
angle | angle, dans [0, 360]
lineheight | hauteur de ligne (pour l’espacement entre les lignes)
- ***element_rect()*** : pour les fonds et les cadres,
PARAMÈTRE | VALEUR
----------| ---------------------------------------------------------------
fill | la couleur de remplissage
colour | la couleur de la bordure
size | la taille de la bordure
linetype | le type de ligne ("blank", "solid", "dashed", "dotted", "dotdash", "longdash", "twodash)
- ***element_line()*** : pour toutes les lignes tracées,
PARAMÈTRE | VALEUR
----------| ---------------------------------------------------------------
colour | la couleur de ligne
size | la taille
linetype | le type de ligne ("blank", "solid", "dashed", "dotted", "dotdash","longdash", "twodash)
lineend | le type de fin de ligne ("round", "butt" ou "square")
- ***element_blank()*** : permet de ne rien dessiner.
## Les composantes
Il s'agit des différents éléments modifiables dans le thème.
Par exemple :
- **Axes**
axis.line, axis.text.x, axis.text.y, axis.ticks, axis.title.x, axis.title.y,...
- **Légende**
legend.background, legend.key, legend.text, legend.title,...
- **Fond de graphe**
panel.background, panel.border, panel.grid.major, panel.grid.minor,...
- etc
## Quelques exemples
```{r fg7_0, echo=TRUE,eval=TRUE,fig.height=5,fig.width=10}
gg <- ggplot(ODD_graphique1) +
geom_point(aes(x = log(Gross_Domestic_Product_GDP),
y = log(Maternal_mortality_ratio),
color = Continent)) +
labs(title = "Mortalité maternelle en fonction du PIB par habitant",
subtitle = "En 2015",
x = "PIB",
y = "Taux de mortalité de la mère \n(pour 100 000 naissances)",
caption = "Source : ODD / ONU")
```
- Changer le fond du graphique ***panel_background***
```{r fg7_1, echo=T,eval=T,fig.height=5,fig.width=10}
gg +
theme(panel.background = element_rect(fill = "Lavender", colour = "black"))
```
- Changer l'apparence du quadrillage ***panel_background***
```{r fg7_2, echo=TRUE,eval=TRUE,fig.height=5,fig.width=10}
gg +
theme(panel.grid.major = element_line(colour = "gray", size = 0.5, linetype = "dashed"))
```
- Changer l'apparence des étiquettes des axes ***axis_xxx()***
```{r fg7_3, echo=TRUE,eval=TRUE,fig.height=5,fig.width=10}
gg +
theme(axis.text.x = element_text(colour = "blue", angle = 45),
axis.title = element_text(face = "bold", colour = "orange"))
```
Certains changements de paramètres ne nécessitent pas l'utilisation de fonction ***element_()*** .
Par exemple, pour changer la position de la légende ***legend.xxx()***
```{r fg7_4, echo=TRUE,eval=TRUE,fig.height=5,fig.width=10}
gg +
theme(legend.position = "left", legend.title = element_blank())
```
## Modifier le thème par défaut
La fonction `theme_set()` vous permet de définir un thème par défaut pour l'ensemble de vos graphiques.
```{r fg7_5, echo=TRUE,eval=TRUE,fig.height=5,fig.width=10}
theme_set(theme_dark())
# Le theme_dark() sera appliqué à tous les graphiques à partir de maintenant
ggplot(ODD_graphique1) +
geom_point(aes(x = log(Gross_Domestic_Product_GDP),
y = log(Maternal_mortality_ratio),
color = Continent)) +
labs(title = "Mortalité maternelle en fonction du PIB par habitant",
subtitle = "En 2015",
x = "PIB",
y = "Taux de mortalité de la mère \n(pour 100 000 naissances)",
caption = "Source : ODD / ONU")
```
```{r , echo=T,eval=T}
# Réinitialisation d'un thème par défaut, car le noir c'est triste!
theme_set(theme_grey())
```
## Créer son propre thème
Un thème est une fonction R qui va prendre en paramètre des éléments que vous souhaitez pouvoir faire varier et fixer des éléments que vous souhaitez avoir comme rendu par défaut.
Créons un thème avec un fond vert pour le ministère de la transition écologique et solidaire. On rajoute un paramètre pour la taille de la police du titre du graphique.
```{r fg7_6}
library(hrbrthemes)
mon_theme <- function(taille_police = 14) {
theme_bw() +
theme(plot.title = element_text(color = "white", size = taille_police, face = "bold"),
text = element_text(color = "white"),
axis.text = element_text(color = "white"),
panel.background = element_rect(fill = "lightgreen", colour = "lightgreen"),
plot.background = element_rect(fill = "#006400", colour = "lightgreen"),
legend.background = element_rect(fill = "lightgreen", colour = "lightgreen"),
legend.key = element_blank())
}
ggplot(ODD_graphique1) +
geom_point(aes(x = log(Gross_Domestic_Product_GDP),
y = log(Maternal_mortality_ratio),
color = Continent)) +
labs(title = "Mortalité maternelle en fonction du PIB par habitant",
subtitle = "En 2015",
x = "PIB",
y = "Taux de mortalité de la mère \n(pour 100 000 naissances)",
caption = "Source : ODD / ONU") +
mon_theme()
```
## Thème - package gouvdown
`{gouvdown}` est un package créé par la communauté d'agents de l'Etat (Spyrales).
![](images/spyrales.PNG){#id .class width=500}
Il s'agit d'ensemble de fonctionnalités qui permet de produire des documents/éléments avec une charte graphique prenant en compte la marque État.
![](images/palette.PNG){#id .class width=500}
L’utilisation de [theme_gouv()](https://spyrales.github.io/gouvdown/reference/theme_gouv.html) permet d'appliquer cette charte.
```{r fg7_6_1}
library(gouvdown)
ggplot(ODD_graphique1) +
geom_point(aes(x = log(Gross_Domestic_Product_GDP),
y = log(Maternal_mortality_ratio),
color = Continent)) +
labs(title = "Mortalité maternelle en fonction du PIB par habitant",
subtitle = "En 2015",
x = "PIB",
y = "Taux de mortalité de la mère \n(pour 100 000 naissances)",
caption = "Source : ODD / ONU") +
theme_gouv(plot_title_size = 15,
subtitle_size = 11,
base_size = 10)
```
NB: Pour les cartes, [theme_gouv_map()](https://spyrales.github.io/gouvdown/reference/theme_gouv_map.html) sera privilégié.
Le thème ne joue pas sur la palette de couleurs employée par défaut, RDV au chapitre suivant.
## Exercice 2
```{r mod5_exo2, child=charge_exo('m5', 'exo2.rmd'), echo=FALSE}
```