4.4 Figures composées
Il arrive fréquemment de vouloir combiner plusieurs graphiques dans une même figure. Plusieurs fonctions sont à votre disposition pour cela. Il faut tout d’abord distinguer deux types de figures multi-graphiques :
- Soit il s’agit d’un seul graphique que vous souhaitez subdiviser par rapport à une ou plusieurs variables facteurs.
- Soit il s’agit de graphiques indépendants que vous souhaitez assembler dans une même figure parce que les données ont un lien entre elles, ou parce que ces graphiques sont complémentaires pour comprendre les données.
Dans le premier cas, les fonctions facet_XXX()
comme facet_grid()
peuvent être employées (ou l’opérateur |
dans une formule). Dans le second cas, la fonction combine_charts()
est l’une des alternatives possibles.
4.4.1 Facettes
L’une des règles les plus importantes que vous devez impérativement garder à l’esprit lors de la réalisation de vos graphiques est la simplicité. Plus votre graphique contiendra d’information, plus il sera compliqué à décoder par vos lecteurs.
# Importation de données relative à la croissance de poulets
(chick_weight <- read("ChickWeight", package = "datasets"))
# # A tibble: 578 x 4
# weight Time Chick Diet
# <dbl> <dbl> <ord> <fct>
# 1 42 0 1 1
# 2 51 2 1 1
# 3 59 4 1 1
# 4 64 6 1 1
# 5 76 8 1 1
# 6 93 10 1 1
# 7 106 12 1 1
# 8 125 14 1 1
# 9 149 16 1 1
# 10 171 18 1 1
# # … with 568 more rows
# Réalisation du graphique (points semi-transparents)
chart(data = chick_weight, weight ~ Time %col=% Diet) +
geom_point(alpha = 0.5) +
labs(x = "Age [j]", y = "Masse [g]")
Le graphique à la Fig. 4.20 est mal adapté pour montrer les différences entre les quatre aliments : tous les points sont entremêlés. Il peut typiquement être simplifié en utilisant des facettes pour représenter les résultats relatifs aux différents régimes alimentaires sur des graphiques séparés. L’information est la même mais la lecture est beaucoup plus aisée.
chart(data = chick_weight, weight ~ Time | Diet) +
geom_point(alpha = 0.5) +
labs(x = "Age [j]", y = "Masse [g]")
Vous observez que les échelles en abscisse et en ordonnée sont similaires sur tous les graphiques. Cela permet une meilleure comparaison. Notez toutefois que, plus le nombre de facettes augmente, plus chaque graphique individuel devient petit. Faites attention à ne pas finir avec des graphiques individuels tellement petits qu’ils en deviennent illisibles !
4.4.2 Graphiques assemblés
La fonction combine_charts()
permet de combiner plusieurs graphiques dans une figure unique. Nous l’avons déjà utilisée à plusieurs reprises. Cette fonction attend une liste (list()
) de graphiques de type chart()
à assembler, et il est possible d’en combiner les légendes à l’aide de common.legend = TRUE
.
# Importation des données
urchin <- read("urchin_bio", package = "data.io", lang = "FR")
# Réalisation des graphiques
a <- chart(data = urchin, weight ~ height %col=% origin) +
geom_point()
b <- chart(data = urchin, weight ~ solid_parts %col=% origin) +
geom_point()
# Combinaison des graphiques dans une même figure
combine_charts(list(a, b), common.legend = TRUE)
Il existe d’autres fonctions permettant de combiner plusieurs graphiques comme plot_grid()
du package {cowplot}, mais avec combine_charts()
vous pourrez déjà faire beaucoup. De plus, un libellé sous forme d’une lettre majuscule est automatiquement associé à chaque sous-région de la figure composée. Cela permet d’y faire plus facilement référence dans le texte et/ou dans la légende.
À vous de jouer !
Effectuez maintenant les exercices du tutoriel A04Ld_fig_composees (Graphiques composés).
BioDataScience1::run("A04Ld_fig_composees")
Réalisez l’assignation A04Ga_graphe_avance.
Si vous êtes un utilisateur non enregistré ou que vous travaillez en dehors d’un cours, faites un “fork” de ce dépôt.
Voyez les explications dans le fichier README.md
.
Pour en savoir plus
Partitionnement des graphiques en facettes. Différentes options sont présentées ici.
Figures composées à l’aide de
grid.arrange()
. Une autre option, mais moins flexible et moins riche quecombine_charts()
.Figures composées à l’aide de
plot_grid()
avec les différentes options, aussi disponibles aveccombine_charts()
.Troisième possibilité pour des figures composées à l’aide de
ggarrange()
.combine_charts()
fait la même chose, mais avec des valeurs par défaut légèrement différentes (labels = "auto"
par défaut pour ce dernier, maislabels = NULL
pourggarrange()
).