
Graphiques interactifs en R : choisir le bon package (ggiraph, echarts4r, plotly et plus)
Un choix honnête — associez le package à ce que vous utilisez déjà, à l’interaction dont vous avez besoin et à l’endroit où vous publierez
Un guide honnête et pratique des graphiques et diagrammes interactifs en R : quand recourir à ggiraph, echarts4r, plotly ou highcharter, ainsi que leaflet pour les cartes et DT/reactable/gt pour les tableaux. Comprend une comparaison côte à côte des interactions, du poids et des licences — et la mise en garde sur la licence commerciale à connaître avant de déployer Highcharts.
- Une réponse en une ligne à « quel package R pour les graphiques interactifs ? » — cela dépend de ce que vous utilisez déjà, de l’interaction dont vous avez besoin et de l’endroit où vous publierez.
- Un tableau comparatif côte à côte — interactions, poids/performance et licence.
- Quand recourir à chacun :
ggiraph,echarts4r,plotly,highcharter, ainsi queleaflet(cartes) etDT/reactable/gt(tableaux). - La mise en garde sur la licence commerciale que vous devez connaître avant de déployer Highcharts.
- Un court guide de décision pour choisir en dix secondes.
Vous avez un graphique en R et vous voulez le rendre interactif — survoler pour afficher une infobulle, zoomer sur une région, cliquer pour filtrer. La bonne nouvelle : R offre d’excellentes options. Le hic : le « meilleur » dépend moins des graphiques que de votre situation. Êtes-vous déjà plongé dans ggplot2 ? Avez-vous besoin d’un contrôle sophistiqué que ggplot2 ne peut pas dessiner (transitions animées, un curseur de zoom, un sankey) ? Et où le graphique atterrit-il — un rapport, une application Shiny, un site commercial public ? Ce guide répond honnêtement à ces questions, sans prétendre qu’un package l’emporte à chaque fois.
Tout ce qui suit part du même point : un graphique ggplot2 statique ordinaire. C’est l’« avant » — les packages interactifs sont ce qui le transforme en quelque chose que vous pouvez survoler, zoomer et cliquer.
La réponse rapide
- Déjà sur ggplot2 et vous voulez une interactivité légère (infobulles, survol, clic) → ggiraph.
- Besoin de contrôles intégrés riches que ggplot2 ne peut pas dessiner — curseurs de zoom, transitions animées, treemaps, sunbursts, sankey, jauges, cartes de chaleur calendaires → echarts4r.
- Vous voulez la plus large couverture de graphiques et une conversion ggplot2 en un appel → plotly.
- Cartes interactives → leaflet. Tableaux interactifs → DT / reactable / gt.
- Vous envisagez highcharter ? Il est soigné, mais vérifiez d’abord la licence Highcharts — elle est gratuite pour un usage personnel/non commercial et payante pour un usage commercial.
Comparaison en un coup d’œil
Chacun d’eux produit un htmlwidget (un objet HTML/JavaScript interactif qui fonctionne dans un rapport Quarto/R Markdown ou une application Shiny). Ils diffèrent par les interactions qu’ils offrent, la taille du JavaScript qu’ils embarquent (ce qui affecte le temps de chargement de la page) et — surtout — leur licence.
| Package | Idéal pour | Interactions | Poids / perf | Licence | Notre guide |
|---|---|---|---|---|---|
| ggiraph | Rendre vos graphiques ggplot2 existants interactifs | Infobulle, survol, clic, sélection | Léger — produit du SVG, conserve le style ggplot2 | GPL-3 (gratuit, open-source) | série ggiraph |
| echarts4r | Contrôles intégrés riches que ggplot2 ne peut pas dessiner | Curseur de zoom/data-zoom, transitions animées, brush, clic | Charge JS plus lourde | Apache-2.0 (gratuit, open-source) | série echarts4r |
| plotly | Large couverture de graphiques + ggplotly() en un appel |
Survol, zoom, panoramique, sélection boîte/lasso | Bundle JS plus lourd | MIT (gratuit, open-source) | Convertir avec ggplotly() |
| highcharter | Graphiques soignés et bien stylés | Survol, zoom, drilldown | JS moyen | Highcharts : gratuit non commercial, payant pour un usage commercial | Vérifiez d’abord la licence |
| leaflet | Cartes interactives | Panoramique, zoom, marqueurs, popups | Moyen | Gratuit, open-source | Série à venir |
| DT / reactable / gt | Tableaux interactifs | Trier, filtrer, paginer, rechercher | Léger–moyen | Gratuit, open-source | Série à venir |
Les lignes ci-dessous expliquent les compromis derrière ce tableau.
ggiraph — ggplot2 interactif, en restant léger
ggiraph rend vos graphiques ggplot2 existants interactifs sans quitter la grammaire des graphiques. Vous remplacez un geom par son jumeau interactif (geom_point_interactive(), geom_col_interactive(), …) et ajoutez les attributs esthétiques tooltip, data_id (pour le survol/la sélection) ou onclick. Il produit le graphique en SVG (un format vectoriel léger et net), de sorte que le résultat reste proche du rendu de qualité publication que ggplot2 vous donne déjà, et la charge est réduite. C’est le bon premier choix quand vous êtes déjà investi dans ggplot2 et que vous voulez des infobulles ou le clic-pour-sélectionner sans reconstruire le graphique dans une nouvelle bibliothèque.
library(ggplot2)
library(ggiraph)
gg <- ggplot(mtcars, aes(wt, mpg, tooltip = rownames(mtcars), data_id = rownames(mtcars))) +
geom_point_interactive(color = "#3a86d4", size = 3) +
theme_minimal()
girafe(ggobj = gg) # renders the interactive SVGCommencez ici : la série ggiraph — infobulles, survol/clic, geoms interactifs, thématisation, et même rendre interactives les figures ggpubr/factoextra.
echarts4r — des interactions riches que ggplot2 ne peut pas dessiner
echarts4r est une surcouche tidy et compatible avec le pipe au-dessus d’Apache ECharts, une bibliothèque de graphiques JavaScript mature. Recourez-y quand vous avez besoin d’interactions qui vont au-delà de la grammaire statique : un curseur de zoom (data-zoom), des transitions animées, des treemaps, des sunbursts, des diagrammes sankey, des jauges ou des cartes de chaleur calendaires. Le compromis est une charge JavaScript plus lourde que le SVG de ggiraph — cela en vaut la peine quand ces contrôles plus riches sont l’objectif, moins pour une simple infobulle de survol.
library(echarts4r)
mtcars |>
e_charts(wt) |>
e_scatter(mpg, symbol_size = 12) |>
e_color("#3a86d4") |>
e_tooltip() |>
e_datazoom() # a draggable zoom slider — pure echarts4recharts4r est sous licence Apache-2.0 — gratuit et open-source, donc aucun accroc de licence pour un usage commercial. Commencez ici : la série echarts4r — barres, courbes, nuage de points, distribution, séries temporelles, treemap/sunburst, sankey/réseau, camembert/donut/jauge, cartes de chaleur calendaires, et thématisation.
plotly — large couverture et conversion en un appel
plotly est l’une des bibliothèques interactives les plus utilisées, et sa commodité phare est ggplotly() : passez-lui un objet ggplot2 existant et il renvoie une version interactive en un seul appel. Il couvre aussi nativement une très large gamme de types de graphiques et vous offre d’emblée le survol, le zoom, le panoramique et la sélection boîte/lasso. Le compromis est un bundle JavaScript plus lourd que ggiraph — un point à peser sur une page sensible à la performance et pensée pour le mobile. (Sur le rythme de développement : plotly est développé moins activement que certaines des alternatives plus récentes, mais il reste stable, populaire et bien documenté.)
library(ggplot2)
library(plotly)
gg <- ggplot(mtcars, aes(wt, mpg)) +
geom_point(color = "#3a86d4", size = 3) +
theme_minimal()
ggplotly(gg) # one call → an interactive versionplotly est sous licence MIT — gratuit et open-source pour un usage commercial.
highcharter — soigné, mais attention à la licence
highcharter enrobe Highcharts, une bibliothèque JavaScript connue pour ses graphiques beaux et bien stylés, et l’API R est agréable à utiliser. La mise en garde importante et déterminante porte sur la licence de la bibliothèque Highcharts sous-jacente (et non l’enrobage R) : Highcharts est gratuit pour un usage personnel et non commercial, mais nécessite une licence commerciale payante pour tout contexte commercial ou à but lucratif — non seulement un produit ou site public, mais aussi un usage interne en entreprise (prototypes, R&D, tableaux de bord internes dans une entreprise à but lucratif). Les propres conditions de Highcharts rendent ceci explicite — le Standard License Agreement régit l’usage commercial (l’usage non commercial relevant de « conditions distinctes »), et la page produit indique que « lorsque vous êtes prêt à utiliser le logiciel pour des projets commerciaux, la licence appropriée doit être en place ». Donc highcharter est excellent pour l’apprentissage et le travail non commercial, mais vérifiez la licence Highcharts avant de l’utiliser dans tout cadre à but lucratif.
Si vous avez besoin d’un package interactif gratuit à déployer pour un travail commercial, préférez ggiraph (GPL-3) ou echarts4r (Apache-2.0) — tous deux entièrement open-source, sans frais d’usage commercial.
leaflet — la référence pour les cartes interactives
Quand le graphique est une carte, les utilisateurs de R se tournent vers leaflet (un enrobage de la bibliothèque de cartographie Leaflet.js). Il vous offre des tuiles à panoramique/zoom, des marqueurs, des popups et des couches choroplèthes — le foyer naturel des données spatiales, dans lesquelles les packages de graphiques généralistes ci-dessus ne se spécialisent pas. Une série Datanovia dédiée est prévue ; pour l’instant, sachez que « carte interactive en R » signifie presque toujours leaflet.
DT, reactable & gt — pour les tableaux interactifs
Un tableau interactif est un besoin différent d’un graphique interactif, et R propose trois options solides : DT (un enrobage de la bibliothèque DataTables — trier/filtrer/paginer/rechercher), reactable (des tableaux interactifs modernes et hautement personnalisables) et gt (des tableaux de qualité publication, avec une interactivité croissante). Si votre objectif est une grille de données recherchable et triable plutôt qu’un graphique, recourez à l’un de ceux-ci plutôt qu’à un package de graphiques. Une couverture dédiée est prévue.
Notre recommandation — décidez en dix secondes
- Vous utilisez déjà ggplot2 + vous voulez une interactivité légère (infobulles, survol, clic) ? → ggiraph. Vous conservez vos graphiques et le rendu prêt à publier, et la sortie SVG reste légère.
- Besoin d’une interaction intégrée riche — curseur de zoom, transition animée, treemap, sunburst, sankey, jauge, carte de chaleur calendaire ? → echarts4r. Il dessine des choses que ggplot2 ne peut tout simplement pas.
- Vous voulez la plus large couverture de graphiques ou une conversion ggplot2 en un appel ? → plotly (
ggplotly()), en acceptant un bundle plus lourd. - Vous faites une carte ? → leaflet. Vous faites un tableau ? → DT / reactable / gt.
- Vous envisagez highcharter pour quelque chose de commercial ? → confirmez d’abord la licence Highcharts, ou passez à ggiraph/echarts4r pour rester gratuit à déployer.
Pour la plupart des utilisateurs de R, le choix par défaut honnête est : ggiraph si vous vivez dans ggplot2, echarts4r quand vous avez besoin de plus que ce que ggplot2 peut exprimer.
Questions fréquentes
Il n’y a pas de gagnant unique — cela dépend de votre situation. Si vous utilisez déjà ggplot2 et voulez des infobulles, du survol ou du clic, ggiraph conserve vos graphiques et reste léger. Si vous avez besoin de contrôles intégrés plus riches (un curseur de zoom, des transitions animées, des treemaps, des sankey, des jauges), echarts4r fait ce que ggplot2 ne peut pas. Pour la plus large couverture de graphiques plus une conversion ggplot2 en un appel, plotly et son ggplotly() sont pratiques. Associez le package à ce que vous utilisez déjà, à l’interaction dont vous avez besoin et à l’endroit où le graphique sera publié.
Tous deux rendent les graphiques ggplot2 interactifs, mais ils diffèrent par le poids et l’approche. ggiraph produit le graphique en SVG léger et vous maintient à l’intérieur de la grammaire ggplot2 (remplacez par des geoms *_interactive() et ajoutez les attributs esthétiques tooltip /data_id) — idéal quand vous voulez des infobulles ou de la sélection sans charge lourde. plotly convertit un objet ggplot2 existant avec un unique appel ggplotly() et offre une très large couverture de graphiques, au prix d’un bundle JavaScript plus lourd. Choisissez ggiraph pour un résultat léger et natif à ggplot2 ; choisissez plotly pour la commodité en un appel et l’étendue.
Le package R highcharter est gratuit, mais il enrobe la bibliothèque JavaScript Highcharts, qui est gratuite pour un usage personnel et non commercial et nécessite une licence commerciale payante pour un usage commercial ou à but lucratif (voir la page produit Highcharts et le Standard License Agreement). Donc c’est parfait pour l’apprentissage et les projets non commerciaux, mais confirmez la licence avant de le déployer sur un site commercial. Pour une alternative gratuite à déployer, utilisez ggiraph (GPL-3) ou echarts4r (Apache-2.0).
Pour une charge petite et rapide, ggiraph est habituellement le plus léger des packages de graphiques généralistes — il produit du SVG plutôt que d’embarquer un gros moteur de graphiques JavaScript, de sorte que les pages se chargent vite et que les figures restent nettes. plotly et echarts4r embarquent de plus grosses bibliothèques JavaScript (le prix de leurs fonctionnalités supplémentaires), donc sur une page sensible à la performance ou au mobile, préférez ggiraph sauf si vous avez spécifiquement besoin d’une interaction qu’il ne peut pas fournir.
Conclusion
Ne demandez pas « quel package de graphiques interactifs est le meilleur » dans l’abstrait — demandez ce que vous utilisez déjà et de quelle interaction vous avez réellement besoin. Si vous vivez dans ggplot2 et voulez une interactivité légère, ggiraph est le choix naturel ; quand vous avez besoin de contrôles que ggplot2 ne peut pas dessiner, echarts4r est la mise à niveau honnête ; plotly achète l’étendue et une conversion en un appel au prix du poids ; leaflet possède les cartes et DT/reactable/gt possèdent les tableaux. Et avant de recourir à highcharter pour quoi que ce soit de commercial, vérifiez la licence Highcharts.
Pour aller plus loin
- série ggiraph — rendez vos graphiques ggplot2 interactifs. · série echarts4r — interactions intégrées riches. · Visualisation de données.
Demandez à Prova « quel package de graphiques interactifs convient à mon graphique ggplot2 et à mon déploiement ? » — elle répond avec du code que vous pouvez exécuter sur vos propres données. The runtime is the judge. Demander à Prova →
Citation
@online{kassambara2026,
author = {Kassambara, Alboukadel},
title = {Graphiques interactifs en R~: choisir le bon package
(ggiraph, echarts4r, plotly et plus)},
date = {2026-07-09},
url = {https://www.datanovia.com/blog/interactive-charts-in-r},
langid = {fr}
}