Mettre en évidence des données dans ggplot2 avec gghighlight
Faites ressortir les séries qui comptent et grisez le reste — en une ligne
Data Visualization
Apprenez à mettre en évidence des données précises dans un graphique ggplot2 avec gghighlight — faites ressortir les courbes ou points clés en grisant le reste, ajoutez des mises en évidence par facette et étiquetez les séries mises en avant. Une façon en une ligne de guider le regard du lecteur.
La méthode en une ligne pour mettre en avant les séries qui comptent — gghighlight() grise automatiquement tout le reste.
Comment mettre en évidence avec un prédicat (max(Temp) > 93) évalué par groupe, et étiqueter les survivants.
Comment mettre en évidence des points dans un nuage de points et des barres dans un diagramme en barres, avec des étiquettes directes.
L’astuce par facette — griser les autres groupes dans chaque petit multiple avec un seul gghighlight().
Comment redéfinir le style des séries grisées avec unhighlighted_params.
Un graphique chargé d’une douzaine de courbes qui se chevauchent ne dit rien au lecteur — il ne trouve pas la série que vous voulez vraiment lui montrer. La solution habituelle est un mélange laborieux d’échelles de couleurs manuelles, de réglages d’alpha et d’étiquettes placées à la main. Le package gghighlight fait tout cela en une seule couche : vous lui donnez une condition, il garde les données correspondantes en pleine couleur et estompe le reste en gris. Tout ce qui suit est du R réel, prêt à copier-coller, n’utilisant que ggplot2 et gghighlight.
Mettre en évidence des courbes avec un prédicat
Commençons par le cas classique : beaucoup de courbes, quelques-unes à montrer. Nous allons tracer la température quotidienne pour chaque mois du jeu de données intégré airquality, en colorant par mois. En l’état, cela fait cinq courbes emmêlées. Ajoutez gghighlight() avec une condition et il ne garde que les séries qui la satisfont — ici, le mois dont la température maximale dépasse 93 °F — en reléguant le reste à l’arrière-plan. Le prédicat est évalué une fois par groupe : max(Temp) > 93 demande donc « le pic de ce mois dépasse-t-il 93 ? ». label_key = Month étiquette directement chaque courbe mise en évidence, ce qui permet de supprimer la légende.
Un seul mois — août (mois 8) — passe le filtre et reste en couleur ; les autres s’estompent en un gris doux qui donne encore du contexte sans capter l’attention. Remarquez ce que vous n’avez pas écrit : pas de scale_colour_manual() manuel, pas de geom_text(), pas de subset(). La condition constitue toute la spécification.
Styler les séries grisées
Par défaut, gghighlight grise les données non retenues à une clarté fixe. Quand vous voulez un rendu différent — plus fin, plus clair ou une couleur précise — passez unhighlighted_params, une liste des attributs esthétiques à redéfinir sur la couche estompée. Ici, nous rendons les courbes d’arrière-plan plus fines et d’un gris plus pâle pour que les mois mis en évidence ressortent encore davantage :
unhighlighted_params remplace l’ancien argument unhighlighted_colour, à usage unique — il accepte n’importe quel attribut esthétique (colour, alpha, linewidth, size), si bien que vous contrôlez la couche estompée aussi complètement que la couche mise en évidence.
Mettre en évidence des points dans un nuage de points
La même idée fonctionne sur un nuage de points, et ici gghighlight() s’avère d’autant plus utile en étiquetant directement les points mis en évidence. Nous ajoutons une simple colonne model à mtcars avec R de base, traçons la puissance en fonction de la consommation, et mettons en évidence les voitures réellement économes en carburant (mpg > 25). Sans attribut de regroupement, gghighlight étiquette directement les points survivants à l’aide de label_key :
Les six voitures les plus sobres conservent leur remplissage azur de la marque et reçoivent une étiquette à leur nom ; tous les autres points passent au gris. Remplacez la condition par tout ce qui renvoie TRUE/FALSE par ligne — hp > 250, cyl == 8, une distance à une cible — et la mise en évidence suit.
Mettre en évidence des barres dans un diagramme en barres
Les diagrammes en barres en profitent aussi : mettez en évidence les barres qui franchissent un seuil et le reste s’efface. Nous réutilisons la colonne model, ordonnons les barres par consommation, et mettons en évidence mpg > 25. coord_flip() garde les noms de voitures lisibles :
library(ggplot2)library(gghighlight)mtcars$model <-rownames(mtcars)ggplot(mtcars, aes(reorder(model, mpg), mpg)) +geom_col(fill ="#3a86d4") +gghighlight(mpg >25) +coord_flip() +labs(x =NULL, y ="Miles per gallon") +theme_minimal()
Les barres au-dessus de 25 restent azur ; tout le reste se grise — une façon nette de répondre à « lesquelles franchissent la limite ? » sans une seconde échelle de couleurs.
Mises en évidence par facette
L’usage le plus frappant de gghighlight est avec les facettes. Appelez gghighlight()sans prédicat et créez une facette par groupe : dans chaque petit multiple, le groupe courant reste en couleur tandis que tous les autres groupes sont tracés en gris derrière lui — donnant un contexte immédiat sur la place de chaque distribution par rapport à l’ensemble. Nous le faisons avec un histogramme de iris en facettes par espèce :
library(ggplot2)library(gghighlight)ggplot(iris, aes(Sepal.Length, fill = Species)) +geom_histogram(bins =20) +scale_fill_viridis_d() +gghighlight() +facet_wrap(~ Species) +labs(x ="Sepal length (cm)", y ="Count") +theme_minimal()
Chaque panneau met au premier plan une espèce et affiche les deux autres en toile de fond grise, si bien que vous lisez chaque groupe dans le contexte de l’échantillon complet — bien plus instructif que trois histogrammes isolés.
Foire aux questions
NoteComment mettre en évidence une courbe ou un groupe précis dans ggplot2 ?
Ajoutez une seule couche gghighlight() avec une condition qui renvoie TRUE/FALSE par groupe, par exemple gghighlight(max(value) > threshold). gghighlight garde la série correspondante en pleine couleur et grise automatiquement le reste — sans échelle de couleurs manuelle, ni subset(), ni geom_text(). Voir l’exemple de mise en évidence de courbes ci-dessus.
NoteComment fonctionne le prédicat de gghighlight ?
Le prédicat est évalué par groupe (défini par votre attribut esthétique colour, fill ou group), si bien qu’une condition d’agrégation comme max(Temp) > 93 ou mean(y) > 0 pose une question sur chaque groupe dans son ensemble. Une condition au niveau de la ligne comme mpg > 25 est évaluée par observation et met en évidence les points ou barres qui la satisfont individuellement.
NoteComment changer la couleur des données grisées (non mises en évidence) ?
Passez unhighlighted_params, une liste d’attributs esthétiques pour la couche estompée, par ex. gghighlight(cond, unhighlighted_params = list(colour = "grey80", alpha = 0.4, linewidth = 0.3)). Il accepte n’importe quel attribut esthétique et remplace l’ancien argument unhighlighted_colour. La section sur le style le montre à l’œuvre.
NoteComment étiqueter les séries mises en évidence ?
Réglez label_key sur la variable que vous voulez sur l’étiquette, par ex. gghighlight(max(Temp) > 93, label_key = Month). Pour les graphiques groupés, gghighlight étiquette chaque courbe mise en évidence ; pour un nuage de points non groupé, il étiquette directement les points survivants. Cela vous permet de supprimer entièrement la légende.
Notegghighlight fonctionne-t-il avec les facettes ?
Oui — et c’est l’une de ses meilleures fonctionnalités. Appelez gghighlight() (souvent sans prédicat) et ajoutez facet_wrap() : chaque facette affiche son propre groupe en couleur avec les autres groupes grisés en arrière-plan, donnant un contexte par panneau. Voir l’exemple par facette.
Aller plus loin dans /learn
Ce billet est la recette ciblée. Pour les leçons complètes, pas à pas — geoms, échelles, couleur, facettes et thèmes — voir la série sous contrôle de reproductibilité :
ggplot2 avec R — le cours complet, dans l’ordre du livre, du premier graphique à la figure prête à publier.
Demandez à Prova« mets en évidence les trois principales courbes de mon graphique ggplot2 et grise le reste » — elle répond avec du code que vous pouvez exécuter sur vos propres données. The runtime is the judge.Demander à Prova →
Cette page vous a-t-elle été utile ?
Merci pour votre retour !
Recevez les nouvelles leçons R & Python par e-mail
Pratique, reproductible, sans spam. Désinscription à tout moment.
Double opt-in. Nous ne partageons jamais votre e-mail.
@online{kassambara2026,
author = {Kassambara, Alboukadel},
title = {Mettre en évidence des données dans ggplot2 avec gghighlight},
date = {2026-07-08},
url = {https://www.datanovia.com/blog/gghighlight-ggplot2},
langid = {fr}
}