Combiner plusieurs ggplots dans R : guide patchwork
Disposez des ggplots indépendants dans une seule figure avec patchwork — en direct dans votre navigateur
Apprenez à combiner plusieurs ggplots en une seule figure dans R — placez les graphiques côte à côte ou empilés avec patchwork, construisez des mises en page personnalisées, ajoutez des étiquettes de panneau et regroupez une légende partagée. Modifiez et exécutez le code en direct, sans installation.
Date de publication
20 juin 2026
Modifié
7 juillet 2026
AstucePoints clés
Un seul jeu de données, plusieurs panneaux ? Utilisez facet_wrap() / facet_grid() (intégrés à ggplot2).
Des graphiques indépendants dans une seule figure ? Utilisez le package patchwork — combinez des ggplots avec des opérateurs simples.
p1 + p2 place les graphiques côte à côte ; p1 / p2 les empile ; mélangez avec | et () pour des mises en page personnalisées.
Ajoutez un titre de figure et des étiquettes de panneau (A, B, C) avec plot_annotation().
Fusionnez les légendes en double en une seule avec plot_layout(guides = "collect").
Chaque figure ci-dessous est rendue pour vous — puis ajustez n’importe quel exemple en direct dans le bac à sable.
Une seule figure qui présente plusieurs graphiques ensemble raconte une histoire plus riche — et il y a deux tâches distinctes. Lorsque les panneaux sont le même type de graphique réparti par groupe, le facettage intégré à ggplot2 est l’outil adapté. Lorsque vous voulez combiner des graphiques indépendants (un nuage de points à côté d’une boîte à moustaches à côté d’un histogramme), tournez-vous vers patchwork — il vous permet d’assembler des ggplots avec des opérateurs intuitifs. Cette leçon couvre patchwork ; les figures sont rendues ici même, et vous pouvez réexécuter ou modifier chacune d’elles en direct.
Nous construisons de petits graphiques à partir des jeux de données intégrés mtcars, ToothGrowth et iris.
Deux graphiques côte à côte, ou empilés
Construisez chaque ggplot comme un objet, puis combinez : + les dispose côte à côte, / les empile.
library(ggplot2)library(patchwork)p1 <-ggplot(mtcars, aes(wt, mpg)) +geom_point(colour ="#3a86d4") +theme_minimal()p2 <-ggplot(ToothGrowth, aes(factor(dose), len)) +geom_boxplot(fill ="#3a86d4", alpha =0.7) +theme_minimal()p1 + p2 # side by side
Remplacez + par / pour empiler verticalement les deux mêmes graphiques :
Combinez les opérateurs avec des parenthèses pour construire une mise en page — ici, deux graphiques en haut et un graphique large en dessous. plot_layout() affine les tailles relatives.
plot_annotation() ajoute un titre pour l’ensemble de la figure et étiquette automatiquement chaque panneau — tag_levels = "A" donne A, B, C (utilisez "1" pour des chiffres).
Utilisez les facettes pour un seul jeu de données réparti par variable ; utilisez patchwork pour des graphiques indépendants. Pour des arrangements prêts à publier, vous pourrez aussi rencontrer ggpubr::ggarrange() — la même idée, un package différent.
Essayez en direct
Les graphiques ci-dessus ont été rendus au moment de la construction. Envie d’expérimenter ? Modifiez le code et appuyez sur Run — il s’exécute dans votre navigateur via webR (sans serveur, sans installation).
Vous travaillez en Python ? Un guide matplotlib des subplots arrive dans la série Python.
🟢 Avec un agent IA
Demandez à Prova« comment rendre le graphique de gauche deux fois plus large que celui de droite dans patchwork ? » — elle répond avec du code que vous pouvez exécuter, pour que la mise en page soit reproductible. The runtime is the judge.Demander à Prova →
Questions fréquentes
NoteQuelle est la différence entre le facettage et patchwork dans ggplot2 ?
Utilisez facet_wrap() / facet_grid() lorsqu’un seul jeu de données est réparti en panneaux par une variable de regroupement (même type de graphique, échelles partagées). Utilisez patchwork (p1 + p2) lorsque vous voulez combiner des graphiques indépendants — par exemple un nuage de points à côté d’une boîte à moustaches construits à partir de données différentes.
NoteComment placer deux ggplots côte à côte dans R ?
Construisez chaque graphique comme un objet, puis combinez-les avec + : p1 + p2 dispose les deux graphiques côte à côte dans une seule figure. Cela nécessite le package patchwork chargé avec library(patchwork).
NoteComment empiler des ggplots verticalement au lieu de les placer côte à côte ?
Utilisez l’opérateur / : p1 / p2 empile les graphiques l’un au-dessus de l’autre. Vous pouvez mélanger +, /, | et des parenthèses — par exemple (p1 | p2) / p3 — pour construire des mises en page personnalisées.
NoteComment ajouter des étiquettes A, B, C à des ggplots combinés ?
Ajoutez plot_annotation(tag_levels = "A") au graphique combiné, comme dans (p1 + p2) + plot_annotation(tag_levels = "A"). Utilisez tag_levels = "1" pour des étiquettes numériques, et le même appel à plot_annotation() accepte un title = pour un titre d’ensemble de la figure.
NoteComment fusionner des légendes en double en une seule légende partagée avec patchwork ?
Lorsque les graphiques combinés partagent la même légende, ajoutez plot_layout(guides = "collect") — par exemple (a + b) + plot_layout(guides = "collect") — et patchwork regroupe les légendes en double en une seule.
Testez vos connaissances
ImportantExercice : empiler deux graphiques avec des étiquettes de panneau
Complétez le code pour que les deux graphiques soient empilés (l’un au-dessus de l’autre) et étiquetés A, B.
# Stack with p1 / p2, then add plot_annotation(tag_levels = "A")
Vous avez combiné des ggplots indépendants en une seule figure avec patchwork — côte à côte, empilés, dans des mises en page personnalisées, avec un titre de figure, des étiquettes de panneau et une légende partagée — et vous avez vu quand utiliser plutôt le facettage. Ensuite, revoyez les facettes pour les panneaux d’un même jeu de données, et explorez le reste de la grammaire de ggplot2.
Cette leçon est reproductible : les figures sont exécutées au moment de la construction (si elles s’affichent, le code fonctionne), et le bac à sable et le quiz se réexécutent en direct dans votre navigateur. The runtime is the judge.
@online{2026,
author = {},
title = {Combiner plusieurs ggplots dans R : guide patchwork},
date = {2026-06-20},
url = {https://www.datanovia.com/learn/data-visualization/ggplot2/combine-plots},
langid = {fr}
}