Chapitre 8 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 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 permet de bien synthétiser l’ensemble des éléments thémables. ]
Voir l’aide de la fonction theme()
et ses nombreux arguments sur le site de présentation du package ggplot2.
Et nous allons ci dessous le détailler.
8.1 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.
8.2 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
8.3 Quelques exemples
<- ggplot(ODD_graphique1) +
gg 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
+
gg theme(panel.background = element_rect(fill = "Lavender", colour = "black"))
- Changer l’apparence du quadrillage panel_background
+
gg theme(panel.grid.major = element_line(colour = "gray", size = 0.5, linetype = "dashed"))
- Changer l’apparence des étiquettes des axes axis_xxx()
+
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()
+
gg theme(legend.position = "left", legend.title = element_blank())
8.4 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.
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éinitialisation d'un thème par défaut, car le noir c'est triste!
theme_set(theme_grey())
8.5 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.
library(hrbrthemes)
<- function(taille_police = 14) {
mon_theme 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()
8.6 Thème - package gouvdown
{gouvdown}
est un package créé par la communauté d’agents de l’Etat (Spyrales).
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.
L’utilisation de theme_gouv() permet d’appliquer cette charte.
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() sera privilégié.
Le thème ne joue pas sur la palette de couleurs employée par défaut, RDV au chapitre suivant.
8.7 Exercice 2
A partir des données de la table ODD_graphique1 (ODD.RData), reprendre le nuage de point obtenu à partir des données ODD :
taux de mortalité maternelle (Maternal_mortality_ratio
) en fonction du produit intérieur brut (Gross_Domestic_Product_GDP
) (Chapitre 5.1)
En modifier le thème :
- insérer un titre de couleur, en gras, centré par rapport au graphe,
- indiquer la source (ODD) et modifier sa taille,
- changer les titres des axes et leurs tailles,
- modifier la couleur de fond du graphe,
- modifier le type de quadrillage (pointillés).
Résultat attendu :