Qu’est-ce que ggplot2
GGPlot2 est un package R puissant et flexible, implémenté par Hadley Wickham, pour produire des graphiques élégants pièce par pièce (Wickham et al. 2019).
Le gg dans ggplot2 signifie Grammaire du Graphique, un concept graphique qui décrit les graphes en utilisant une “grammaire”. Selon le concept ggplot2, un graphique peut être divisé en différentes parties fondamentales : Graphique = données + Esthétique + Géométrie (ou en anglais Plot = data + Aesthetics + Geometry)
- data : data frame
- esthétique (ou aesthetics en anglais) : permet d’indiquer les variables x et y. Il peut également être utilisé pour contrôler la couleur, la taille et la forme des points, etc…
- géométrie : correspond au type de graphique (histogramme, box plot, line plot, …..)
La syntaxe de ggplot2 peut sembler opaque pour les débutants, mais une fois que vous comprenez les bases, vous pouvez créer et personnaliser tous les types de graphiques que vous voulez.
Notez que, pour réduire cette opacité, nous avons récemment créé un package R, nommé ggpubr (ggplot2 Based Publication Ready Plots), pour rendre ggplot plus simple pour les étudiants et chercheurs ayant des connaissances en programmation non avancées.
Sommaire:
Livre Apparenté
GGPLOT2 - L’Essentiel pour une Visualisation Magnifique des Données dans RFonctions clés
Après avoir installé et chargé le package ggplot2, vous pouvez utiliser les fonctions clés suivantes:
Types de graphes | Fonctions GGPlot2 |
---|---|
Initialiser un ggplot | ggplot() |
Nuage de points | geom_point() |
Box plot | geom_boxplot() |
Violon plot | geom_violin() |
Strip chart | geom_jitter() |
Dot plot | geom_dotplot() |
Bar plot | geom_bar() ou geom_col() |
Line plot | geom_line() |
Histogramme | geom_histogram() |
Graphique de densité | geom_density() |
Barres d’erreur | geom_errorbar() |
QQ plot | stat_qq() |
ECDF plot | stat_ecdf() |
Titres et libellés des axes | labs() |
Exemple de graphiques
La fonction principale du package ggplot2 est ggplot()
, qui peut être utilisée pour initialiser le système graphique avec des données et les variables x/y.
Par exemple, le code R suivant prend le jeu de données iris
pour initialiser le ggplot, puis une couche (geom_point()
) est ajoutée sur le ggplot pour créer un diagramme de dispersion de x = Sepal.Length
en fonction de y = Sepal.Width
:
library(ggplot2)
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width))+
geom_point()
# Modifier la taille, la couleur et la forme des points
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width))+
geom_point(size = 1.2, color = "steelblue", shape = 21)
Notez que, dans le code ci-dessus, la forme des points est spécifiée avec un chiffre. Les différentes formes de points disponibles dans R, sont:
Il est également possible de contrôler la forme et la couleur des points par une variable de groupement (ici, Species
). Par exemple, dans le code ci-dessous, nous mappons la couleur et la forme des points à la variable de groupement Species
.
Notez qu’un ggplot peut être tenu dans une variable, par exemple p
, pour être afficher plus tard
# Changer la couleur des points par groupes
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width))+
geom_point(aes(color = Species, shape = Species))
# Modifier manuellement la couleur par défaut.
# Utiliser la fonction scale_color_manual()
p <- ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width))+
geom_point(aes(color = Species, shape = Species))+
scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))
print(p)
Position de la légende
La position par défaut de la légende est “right”. Utilisez la fonction theme()
avec l’argument legend.position
pour spécifier la position de la légende.
Les valeurs autorisées pour la position de la légende incluent : “left” (à gauche), “top” (en haut), “right” (à droite), “bottom” (en bas), “none” (aucun).
Exemples:
# Changer la position de la légende vers le haut
p + theme(legend.position = "top")
Pour supprimer la légende, utilisez p + theme(legend.position = “none”)
.
Titres et étiquettes des axes
La fonction labs()
peut être utilisée pour changer facilement le titre principal, le sous-titre, les étiquettes des axes et les légendes.
p + labs(
title = "Edgar Anderson's Iris Data",
subtitle = "iris is a data frame with 150 cases (rows) and 5 variables",
x = "Sepal Length (cm)", y = "Sepal Width (cm)"
)
Facette : Graphique à plusieurs paneaux
Vous pouvez également diviser le graphique en plusieurs panneaux en fonction d’une variable de regroupement. Fonction R: facet_wrap()
. Une autre caractéristique intéressante de ggplot2, c’est la possibilité de combiner plusieurs couches sur un même graphique. Par exemple, avec le code R suivant, nous allons:
- Ajouter des points avec
geom_point()
, colorés par groupes. - Ajoutez la ligne de régression lissée en utilisant
geom_smooth()
. Par défaut, la fonctiongeom_smooth()
ajoute la ligne de régression et la zone de confiance. Vous pouvez contrôler la couleur des lignes et la couleur de remplissage de la zone de confiance par groupes. - Diviser le graphique en plusieurs panneaux par groupes
- Modifier la couleur et remplir manuellement à l’aide de la fonction
scale_color_manual()
andscale_fill_manual()
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width))+
geom_point(aes(color = Species))+
geom_smooth(aes(color = Species, fill = Species))+
facet_wrap(~Species, ncol = 3, nrow = 1)+
scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))+
scale_fill_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))
Thème de GGPlot
Notez que le thème par défaut de ggplots est theme_gray()
(ou theme_grey()
), qui est un thème avec un fond gris et des lignes de grille blanches. D’autres thèmes sont disponibles pour des présentations ou des publications professionnelles. Il s’agit notamment de : theme_bw()
, theme_classic()
et theme_minimal()
.
Pour changer le thème d’un ggplot donné (p), utilisez ceci: p + theme_classic()
. Pour changer le thème par défaut en theme_classic()
pour tous les futurs ggplots pendant toute votre session R, tapez le code R suivant:
theme_set(
theme_classic()
)
Maintenant vous pouvez créer des ggplots avec theme_classic()
comme thème par défaut:
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width))+
geom_point()
Autres personnalisations d’un ggplot
Vous pouvez en savoir plus dans notre fiche ggplot en ligne, [GGPlot Cheat Sheet for Great Customization] (http://www.sthda.com/english/articles/32-r-graphics-essentials/125-ggplot-cheat-sheet-for-great-customization/), qui décrit comment:
- Ajouter un titre, un sous-titre, une légende et modifier les libellés des axes
- Modifier l’apparence - couleur, taille et style - des titres
- Définir les limites de l’axe
- Définir une échelle d’axe logarithmique
- Pivoter le texte des axes
- Modifier le titre et la position de la légende, ainsi que la couleur et la taille
- Modifier un thème ggplot et modifier la couleur de l’arrière-plan
- Ajouter une image d’arrière-plan à un ggplot
- Utilisez différentes palettes de couleurs : palettes de couleurs personnalisées, palettes adaptées aux daltoniens, palettes RColorBrewer, palettes de couleurs viridis et palettes de couleurs pour revues scientifiques.
- Modifier les formes de points (symboles) et les types de lignes
- Rotation d’un ggplot
- Annoter un ggplot en ajoutant des lignes droites, des flèches, des rectangles et du texte.
Sauvegarder ggplots
Vous pouvez exporter un ggplot vers de nombreux formats de fichiers, y compris : PDF, fichiers vectoriels SVG, PNG, TIFF, JPEG, etc.
La procédure standard pour sauvegarder les graphiques de R est la suivante:
- Ouvrir une fenêtre graphique en utilisant l’une des fonctions suivantes:
- pdf(“r-graphics.pdf”),
- svg(“r-graphics.svg”),
- png(“r-graphics.png”),
- tiff(“r-graphics.tiff”),
- jpeg(“r-graphics.jpg”),
- et ainsi de suite.
Des arguments supplémentaires indiquant la largeur et la hauteur (en pouces) de la zone graphique peuvent également être spécifiés dans la fonction mentionnée.
- Créer et afficher un graphique
- Fermer la fenêtre graphique à l’aide de la fonction
dev.off()
Par exemple, pour exporter des graphiques ggplot2 vers un fichier pdf, le code R ressemble à ceci:
# Créer des graphiques
library(ggplot2)
myplot1 <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
geom_point()
myplot2 <- ggplot(iris, aes(Species, Sepal.Length)) +
geom_boxplot()
# Enregistrer les graphiques dans un fichier pdf
pdf("ggplot.pdf")
print(myplot1) # Graphique 1 --> dans la première page du PDF
print(myplot2) # Graphique 2 ---> dans la deuxième page du PDF
dev.off()
Pour enregistrer dans un fichier png, utilisez:
png("myplot.png")
print(myplot)
dev.off()
Il est également possible de faire un ggplot et de l’enregistrer à l’écran en utilisant la fonction ggsave():
# 1. Créer un graphique : affiché à l'écran (par défaut)
ggplot(mtcars, aes(wt, mpg)) + geom_point()
# 2.1. Sauvegarder le graphique au format pdf
ggsave("myplot.pdf")
# 2.2 OU l'enregistrer dans un fichier png
ggsave("myplot.png")
Conclusion
Cet article explique les bases de ggplot2 et montre comment exporter un ggplot vers un fichier PDF ou PNG.
References
Wickham, Hadley, Winston Chang, Lionel Henry, Thomas Lin Pedersen, Kohske Takahashi, Claus Wilke, Kara Woo, and Hiroaki Yutani. 2019. Ggplot2: Create Elegant Data Visualisations Using the Grammar of Graphics. https://CRAN.R-project.org/package=ggplot2.
Version: English
No Comments