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.

Auteur·rice
Date de publication

8 juillet 2026

Modifié

16 juillet 2026

AstuceCe que vous allez apprendre
  • 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.

library(ggplot2)
library(gghighlight)

ggplot(airquality, aes(Day, Temp, colour = factor(Month))) +
  geom_line(linewidth = 0.9) +
  scale_colour_viridis_d() +
  gghighlight(max(Temp) > 93, label_key = Month) +
  labs(x = "Day of month", y = "Temperature (°F)") +
  theme_minimal()

A ggplot2 line chart of daily temperature by month; the hottest month is drawn in colour and labelled while the other months are greyed out.

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 :

library(ggplot2)
library(gghighlight)

ggplot(airquality, aes(Day, Temp, colour = factor(Month))) +
  geom_line(linewidth = 0.9) +
  scale_colour_viridis_d() +
  gghighlight(
    max(Temp) > 93,
    label_key = Month,
    unhighlighted_params = list(linewidth = 0.4, colour = alpha("grey60", 0.6))
  ) +
  labs(x = "Day of month", y = "Temperature (°F)") +
  theme_minimal()

The same temperature line chart with the greyed-out background months drawn thinner and lighter than the highlighted ones.

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 :

library(ggplot2)
library(gghighlight)

mtcars$model <- rownames(mtcars)

ggplot(mtcars, aes(mpg, hp)) +
  geom_point(colour = "#3a86d4", size = 2.6) +
  gghighlight(
    mpg > 25,
    label_key = model,
    unhighlighted_params = list(colour = "grey80")
  ) +
  labs(x = "Miles per gallon", y = "Horsepower") +
  theme_minimal()

A ggplot2 scatter plot of horsepower versus miles per gallon; the six most fuel-efficient cars are highlighted in azure and labelled, the rest greyed out.

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()

A horizontal ggplot2 bar chart of miles per gallon by car; bars above 25 mpg are highlighted in azure and the rest are greyed out.

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()

Three faceted ggplot2 histograms of iris sepal length, one per species; each facet shows its own species in colour with the other two greyed in the background.

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

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.

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.

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.

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.

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.

Voir aussi

🟢 Avec un agent IA

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 ?

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.

Partager cette pageXLinkedInRedditHN

Citation

BibTeX
@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}
}
Veuillez citer ce travail comme suit :
Kassambara, Alboukadel. 2026. “Mettre en évidence des données dans ggplot2 avec gghighlight.” July 8. https://www.datanovia.com/blog/gghighlight-ggplot2.