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()
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à.
9 juillet 2026
9 juillet 2026
geom_point() devient geom_point_interactive().tooltip (le texte au survol), data_id (l’identifiant utilisé pour le survol/la sélection) et onclick (le JavaScript à exécuter au clic).girafe() pour produire un widget SVG interactif.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.
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.

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.
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
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().
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.
| 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 |
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.
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 →
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.
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.
Vous avez un diagramme en barres ggplot2 statique de la moyenne de mpg par nombre de cylindres :
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().
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.
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.
Prêt à passer à la vitesse supérieure ?
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.
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.
@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}
}