Graphiques ggplot2 interactifs en R avec ggiraph : prise en main

Ajoutez des info-bulles, des surbrillances au survol et des actions au clic à un nuage de points ggplot2

Rendez n’importe quel graphique ggplot2 interactif avec ggiraph — remplacez un geom par son jumeau geom_*_interactive(), ajoutez les attributs esthétiques tooltip/data_id/onclick, et enveloppez le graphique dans girafe(). Survolez un point pour révéler son étiquette et le mettre en surbrillance, en utilisant la grammaire que vous connaissez déjà.

Date de publication

9 juillet 2026

Modifié

9 juillet 2026

AstucePoints clés
  • ggiraph rend les graphiques ggplot2 interactifs — c’est gratuit et open source.
  • Remplacez un geom par son jumeau interactif : geom_point() devient geom_point_interactive().
  • Trois nouveaux attributs esthétiques pilotent l’interactivité : tooltip (le texte au survol), data_id (l’identifiant utilisé pour le survol/la sélection) et onclick (le JavaScript à exécuter au clic).
  • Enveloppez le graphique terminé dans girafe() pour produire un widget SVG interactif.
  • Vous connaissez déjà la grammaire — ggiraph ne fait qu’ajouter une fine couche interactive par-dessus.

Introduction

Vous construisez déjà des graphiques avec ggplot2. ggiraph vous permet de rendre ces mêmes graphiques interactifs — survolez un point pour lire une étiquette, cliquez dessus pour déclencher une action, ou mettez-le en surbrillance au survol — sans quitter la grammaire des graphiques. C’est un package R gratuit et open source, et la modification de votre code est minime : remplacez un geom_*() par son jumeau geom_*_interactive(), ajoutez un ou deux attributs esthétiques, et enveloppez le graphique dans girafe().

Cette leçon utilise le jeu de données intégré mtcars — le poids de la voiture (wt) en fonction des miles par gallon (mpg) — pour partir d’un simple nuage de points et le rendre interactif, une petite étape à la fois.

Commencez avec un graphique ggplot2 simple

Voici un nuage de points statique ordinaire : wt sur l’axe des x, mpg sur l’axe des y, tracé avec geom_point(). Rien d’interactif pour l’instant — c’est le graphique que vous savez déjà réaliser.

library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(color = "#3a86d4", size = 3) +
  labs(
    x = "Weight (1000 lbs)",
    y = "Miles per gallon",
    title = "Fuel economy vs weight"
  ) +
  theme_minimal()

ggplot2 scatter plot of car weight (wt) on the x-axis versus miles per gallon (mpg) on the y-axis; points trend downward.

Le graphique se lit clairement, mais c’est une image inerte : vous ne pouvez pas dire quelle voiture correspond à chaque point sans une couche d’étiquettes distincte, et étiqueter les 32 points encombrerait le graphique. L’interactivité résout exactement ce problème — le détail n’apparaît que lorsque le lecteur le demande, au survol.

Le seul changement : un geom interactif

ggiraph reproduit les geoms de ggplot2. Pour presque chaque geom_*() il existe un geom_*_interactive() qui accepte les mêmes arguments plus trois attributs esthétiques interactifs. Pour rendre les points interactifs, remplacez geom_point() par geom_point_interactive() et associez deux de ces attributs esthétiques à l’intérieur de aes() :

  • tooltip — le texte affiché lorsque le lecteur survole un point. Nous utilisons le nom de la voiture (rownames(mtcars)).
  • data_id — l’identifiant qui relie le point au comportement de survol/sélection ; l’élément survolé est celui qui se met en surbrillance.
library(ggplot2)
library(ggiraph)

p <- ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point_interactive(
    aes(tooltip = rownames(mtcars), data_id = rownames(mtcars)),
    color = "#3a86d4", size = 3
  ) +
  labs(
    x = "Weight (1000 lbs)",
    y = "Miles per gallon",
    title = "Fuel economy vs weight"
  ) +
  theme_minimal()
p

ggplot2 scatter plot of weight versus miles per gallon built with geom_point_interactive; visually identical to the static version until rendered as a widget.

Rendu sous forme d’image statique, p semble identique au premier graphique — les attributs esthétiques interactifs ne changent pas l’image, ils attachent des métadonnées cachées à chaque point. L’objet p est un ggplot normal ; l’interactivité ne prend vie que lorsque nous le confions à girafe().

Rendez-le interactif avec girafe()

girafe() rend le graphique sous forme de widget SVG interactif. Passez le ggplot avec ggobj = p, définissez explicitement width_svg/height_svg pour que le widget réserve son espace (aucun décalage de mise en page), et utilisez options pour styliser les interactions — opts_hover() définit la couleur de surbrillance du point survolé, et opts_tooltip() stylise l’info-bulle.

library(ggplot2)
library(ggiraph)

p <- ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point_interactive(
    aes(tooltip = rownames(mtcars), data_id = rownames(mtcars)),
    color = "#3a86d4", size = 3
  ) +
  labs(
    x = "Weight (1000 lbs)",
    y = "Miles per gallon",
    title = "Fuel economy vs weight"
  ) +
  theme_minimal()

girafe(
  ggobj = p,
  width_svg = 7,
  height_svg = 4.5,
  options = list(
    opts_hover(css = "fill:#f5a524;stroke:#f5a524;"),
    opts_tooltip(opacity = 0.9)
  )
)

Survolez un point pour voir le nom de la voiture ; le point survolé se met en surbrillance en ambre. Voilà tout le bénéfice — le même nuage de points, désormais lisible point par point sans couche d’étiquettes encombrée.

Un SVG interactif est opaque pour les lecteurs d’écran, voici donc les premières lignes derrière le graphique — le poids des voitures et la consommation de carburant pour le widget ci-dessus.

First six cars: weight and miles per gallon.
Weight (1000 lbs) Miles per gallon
Mazda RX4 2.620 21.0
Mazda RX4 Wag 2.875 21.0
Datsun 710 2.320 22.8
Hornet 4 Drive 3.215 21.4
Hornet Sportabout 3.440 18.7
Valiant 3.460 18.1

Les trois attributs esthétiques interactifs

Chaque geom_*_interactive() comprend les trois mêmes attributs esthétiques. Vous utiliserez tooltip et data_id en permanence ; onclick lorsque vous voulez qu’un clic fasse quelque chose.

Attribut esthétique Ce qu’il fait
tooltip Le texte (ou HTML) affiché lorsque le lecteur survole l’élément.
data_id Un identifiant pour l’élément ; le survoler ou le sélectionner pilote la surbrillance, et les identifiants partagés se mettent en surbrillance ensemble.
onclick Un extrait de JavaScript exécuté lorsque l’élément est cliqué — par ex. ouvrir un lien ou afficher un panneau de détail.

Vous les associez à l’intérieur de aes() exactement comme n’importe quel autre attribut esthétique. Comme ggiraph s’appuie sur ggplot2, tout le reste de ce que vous connaissez s’applique toujours — les échelles, les facettes, les thèmes et les autres couches fonctionnent tous sans changement. Si vous débutez avec la grammaire elle-même, commencez par la leçon nuage de points ggplot2 ; ggiraph ne fait qu’ajouter la couche interactive par-dessus.

🟢 Avec un agent IA

Demandez à Prova « comment faire pour qu’une info-bulle ggiraph affiche plus d’une valeur ? » — elle répond avec du code que vous pouvez exécuter, donc l’explication est reproductible. The runtime is the judge. Demander à Prova →

Problèmes fréquents

Le graphique s’affiche mais rien ne se passe au survol. Vous avez presque certainement utilisé un geom simple. geom_point() dessine des points mais n’attache aucune interactivité — seul geom_point_interactive() (et les autres jumeaux _interactive) lisent les attributs esthétiques tooltip/data_id/onclick. Remplacez le geom.

Le widget saute ou se redimensionne bizarrement au chargement de la page. Définissez width_svg et height_svg dans girafe() pour que le SVG réserve son espace dès le départ. Sans dimensionnement explicite, le widget peut se réagencer, décalant la mise en page au moment de son rendu.

tooltip = rownames(mtcars) génère une erreur ou s’affiche vide. tooltip doit être un vecteur de caractères de la même longueur que vos données. Les noms de lignes sont des caractères, ils fonctionnent donc directement ; une colonne numérique nécessite as.character(), et une colonne qui n’existe pas dans les données (ou une différence de longueur) produit des info-bulles vides ou manquantes.

Questions fréquentes

ggiraph transforme un graphique ggplot2 en widget HTML interactif. Vous remplacez les geoms standards par leurs équivalents geom_*_interactive(), ajoutez les attributs esthétiques tooltip, data_id ou onclick, et rendez le graphique avec girafe(). Le résultat prend en charge les info-bulles au survol, la surbrillance et les actions au clic. C’est gratuit et open source.

Utilisez un geom interactif et associez l’attribut esthétique tooltip, par ex. geom_point_interactive(aes(tooltip = rownames(mtcars))), puis enveloppez le graphique dans girafe(). La valeur de tooltip doit être un vecteur de caractères de la même longueur que vos données.

geom_point() dessine des points statiques. geom_point_interactive() dessine les mêmes points mais accepte aussi les attributs esthétiques interactifs (tooltip, data_id, onclick) et les enregistre dans le SVG, afin que girafe() puisse faire réagir les points au survol et au clic. Visuellement, les deux sont identiques jusqu’à ce qu’ils soient rendus sous forme de widget.

Non. ggiraph s’appuie sur ggplot2, vos échelles, facettes, thèmes et autres couches restent donc les mêmes. Vous remplacez seulement les geoms que vous voulez rendre interactifs par leurs jumeaux _interactive, ajoutez les attributs esthétiques interactifs, et enveloppez le graphique terminé dans girafe().

Oui. ggiraph est un package R gratuit et open source (voir la documentation ggiraph). Il produit un SVG interactif standard et autonome, aucun serveur ni service payant n’est donc requis.

Testez vos connaissances

Vous avez un diagramme en barres ggplot2 statique de la moyenne de mpg par nombre de cylindres :

library(ggplot2)
d <- aggregate(mpg ~ cyl, data = mtcars, FUN = mean)
ggplot(d, aes(x = factor(cyl), y = mpg)) +
  geom_col(fill = "#3a86d4") +
  theme_minimal()

Tâche : transformez-le en widget interactif où survoler une barre affiche sa moyenne de mpg. Quel geom remplacez-vous, quel attribut esthétique porte le texte au survol, et qu’est-ce qui enveloppe le graphique terminé ?

Les barres ont elles aussi un jumeau interactif — geom_col_interactive(). Associez l’attribut esthétique tooltip à la valeur que vous voulez afficher, puis rendez avec girafe().

library(ggplot2)
library(ggiraph)

d <- aggregate(mpg ~ cyl, data = mtcars, FUN = mean)
p <- ggplot(d, aes(x = factor(cyl), y = mpg)) +
  geom_col_interactive(
    aes(tooltip = round(mpg, 1), data_id = factor(cyl)),
    fill = "#3a86d4"
  ) +
  theme_minimal()

girafe(ggobj = p, width_svg = 7, height_svg = 4.5)

Remplacez geom_col() par geom_col_interactive(), associez tooltip (ici la moyenne arrondie de mpg), et enveloppez le graphique dans girafe().

Lequel des trois attributs esthétiques interactifs utilisez-vous pour exécuter du JavaScript lorsqu’un élément est cliqué ?

onclick. Il prend un extrait de JavaScript qui s’exécute au clic (par exemple, pour ouvrir un lien). tooltip définit le texte au survol et data_id définit l’identifiant utilisé pour le survol/la sélection.

Conclusion

Rendre un graphique ggplot2 interactif avec ggiraph est un changement petit et mécanique : remplacez le geom par son jumeau geom_*_interactive(), associez tooltip/data_id/onclick, et enveloppez le graphique dans girafe(). La grammaire que vous connaissez déjà se transpose sans changement — vous ne faites qu’ajouter une couche d’interactivité par-dessus.

Leçons connexes

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
Note

Cette leçon est reproductible : les figures sont exécutées au moment de la génération (si elles s’affichent, le code fonctionne). Copiez n’importe quel bloc et exécutez-le pour reproduire ces graphiques. The runtime is the judge.

Réutilisation

Citation

BibTeX
@online{2026,
  author = {},
  title = {Graphiques ggplot2 interactifs en R avec ggiraph : prise en
    main},
  date = {2026-07-09},
  url = {https://www.datanovia.com/learn/data-visualization/ggiraph/getting-started},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
“Graphiques ggplot2 interactifs en R avec ggiraph : prise en main.” 2026. July 9. https://www.datanovia.com/learn/data-visualization/ggiraph/getting-started.