Diagrammes en barres et en colonnes interactifs en R avec echarts4r
Ajoutez des infobulles au survol, un curseur de zoom et des barres groupées/empilées à un diagramme en barres façon ggplot
Transformez un diagramme en barres statique ggplot2 en un diagramme interactif avec echarts4r — ajoutez des infobulles au survol, un curseur de zoom, et des barres groupées ou empilées, le tout depuis un flux de travail en pipe familier. Chaque graphique se charge à la demande pour que la page reste rapide.
Date de publication
9 juillet 2026
Modifié
9 juillet 2026
AstucePoints clés
echarts4r enrobe Apache ECharts, une bibliothèque JavaScript de graphiques libre et open source, dans un pipe R épuré — e_charts() démarre un graphique, e_bar() ajoute des barres.
Les barres sont le choix naturel pour comparer une valeur entre catégories ; l’interactivité ajoute des infobulles au survol, un curseur de zoom pour de nombreuses catégories, et des dispositions groupées/empilées que vous pouvez basculer dans la légende.
Sur cette page, chaque graphique interactif se cache derrière un poster statique que vous cliquez pour charger — la lourde bibliothèque de graphiques ne se télécharge qu’à la demande, pour que la page reste dans le budget de performance mobile.
Le poster statique est un simple graphique ggplot2, produit par du code que vous pouvez copier et exécuter — la version interactive, ce sont les mêmes données, rendues explorables.
Introduction
Vous réalisez déjà des diagrammes en barres avec ggplot2 : geom_col(), une couleur de remplissage, un axe inversé, et voilà. Ce graphique statique est parfait pour un rapport ou un article. Mais parfois vous voulez que le lecteur l’explore — lire la valeur exacte au survol, zoomer sur un axe encombré, ou activer et désactiver une série. C’est là qu’intervient echarts4r : il apporte Apache ECharts — une bibliothèque de graphiques mature, libre et open source — dans R avec un flux de travail en pipe qui semble familier si vous connaissez le tidyverse.
Cette leçon construit deux fois le même diagramme en barres : d’abord comme figure statique ggplot2 (la référence reproductible, et le poster à chargement rapide que vous voyez sur la page), puis comme widget interactif echarts4r que vous chargez d’un clic. Nous commençons simplement, puis ajoutons des infobulles, un curseur de zoom, et des dispositions groupées et empilées.
NotePourquoi chaque graphique se charge au clic
Un widget ECharts interactif embarque environ 1 Mo de JavaScript et dessine sur un canvas HTML. En charger plusieurs à la fois ralentirait la page sur un téléphone. Ainsi, sur cette page, chaque graphique interactif est d’abord représenté par une image statique ; cliquer sur ▶ Charger le graphique interactif insère le véritable widget echarts4r, entièrement interactif. Vous obtenez la vitesse d’une page statique et l’interactivité complète à la demande. Dans votre propre rapport ou application Shiny, il vous suffirait d’imprimer directement le widget — le code est identique.
La référence statique : un diagramme en barres ggplot2
Nous allons représenter la consommation urbaine pour une poignée de voitures du jeu de données intégré mtcars. D’abord, préparez un petit data frame en R de base et dessinez un diagramme en barres horizontal avec ggplot2. Cette figure statique est la référence reproductible — et, sur cette page, l’image principale que la page charge en premier.
library(ggplot2)# Prepare a small data frame (base R — no dplyr needed)cars <-data.frame(model =rownames(mtcars),mpg = mtcars$mpg)cars <- cars[order(cars$mpg), ] # sort ascendingcars <-tail(cars, 10) # keep the 10 most efficientcars$model <-factor(cars$model, levels = cars$model)ggplot(cars, aes(mpg, model)) +geom_col(fill ="#3a86d4") +labs(x ="Miles per gallon", y =NULL,title ="City fuel economy, most efficient cars") +theme_minimal(base_size =13)
Les barres sont triées, la série unique utilise l’azur de la marque #3a86d4, et theme_minimal() le garde épuré. C’est un graphique prêt à publier. Rendons maintenant la même comparaison explorable.
Votre premier diagramme en barres interactif
echarts4r lit un data frame, vous nommez la colonne de catégorie dans e_charts(), puis ajoutez une série de barres avec e_bar(). Le pipe (|>) enchaîne les étapes, exactement comme l’ajout de couches dans ggplot2. Nous affectons le graphique à e plutôt que de l’imprimer en ligne, pour que la page reste légère — puis le chargeons derrière le poster ci-dessous.
library(echarts4r)e <- cars |>e_charts(model) |># the category (x) axise_bar(mpg, name ="MPG") |># a bar series from the mpg columne_color("#3a86d4") |># brand azure, matching the static charte_flip_coords() |># horizontal bars (swap x/y), like coord_flip()e_tooltip() |># show a tooltip on hovere_legend(show =FALSE) # one series — no legend needed
Lisez le pipe de haut en bas : démarrez un graphique sur model, ajoutez une série de barres mpg nommée “MPG”, colorez-la en azur, basculez en barres horizontales, activez les infobulles au survol. e_flip_coords() est l’équivalent echarts4r du coord_flip() de ggplot2. Enregistrez maintenant le widget et affichez-le derrière un poster.
Diagramme en barres horizontal des miles par gallon par modèle de voiture, en barres azur. Survolez n’importe quelle barre pour lire sa valeur exacte en miles par gallon.
Survolez une barre et ECharts affiche la valeur exacte dans une infobulle flottante — l’interaction que vous ne pouvez pas obtenir d’un PNG statique. Tout le reste, ce sont les mêmes données et la même palette azur.
Barres groupées et empilées
Les barres méritent vraiment leur interactivité quand vous comparez plusieurs séries à la fois. Ici, nous comptons les voitures par nombre de cylindres (cyl) et transmission (am), puis dessinons une série de barres par type de transmission. Ajoutez deux appels e_bar() et echarts4r les place côte à côte ; ajoutez stack = "total" et il les empile. La légende est interactive — cliquez sur le nom d’une série dans le graphique rendu pour la basculer.
# Count cars by cylinders x transmission (base R)tab <-as.data.frame(table(cyl = mtcars$cyl,gear =ifelse(mtcars$am ==1, "Manual", "Automatic")))wide <-reshape(tab, idvar ="cyl", timevar ="gear",direction ="wide") # one row per cyl, base-R reshapenames(wide) <-c("cyl", "Automatic", "Manual")grouped <- wide |>e_charts(cyl) |>e_bar(Automatic) |>e_bar(Manual) |>e_color(c("#3a86d4", "#f5a524")) |># azure + ambere_tooltip(trigger ="axis") |># one tooltip for the whole categorye_x_axis(name ="Cylinders") |>e_y_axis(name ="Number of cars")
e_tooltip(trigger = "axis") affiche les deux séries ensemble lorsque vous survolez une catégorie — pratique pour comparer. Pour obtenir des barres empilées plutôt que groupées, donnez aux deux séries le même nom de stack :
stacked <- wide |>e_charts(cyl) |>e_bar(Automatic, stack ="grp") |>e_bar(Manual, stack ="grp") |># same stack name -> stackede_color(c("#3a86d4", "#f5a524")) |>e_tooltip(trigger ="axis")
Diagramme en barres groupées du nombre de voitures par cylindre et transmission, barres azur et ambre. Survolez une catégorie pour comparer les deux séries ; cliquez sur une entrée de la légende pour la basculer.
Dans le graphique chargé, cliquez sur Automatic ou Manual dans la légende pour masquer ou afficher cette série — l’axe se remet automatiquement à l’échelle. Ce bouton de légende est un véritable moyen d’interaction qu’une figure statique ne peut pas offrir.
Un curseur de zoom pour de nombreuses catégories
Quand un diagramme en barres a de nombreuses catégories, les étiquettes se tassent. ECharts résout cela avec un curseur de zoom des données : une commande de plage déplaçable qui permet au lecteur de se concentrer sur une tranche de l’axe. Ajoutez-le avec e_datazoom(). Ici, nous représentons les 32 voitures, donc le curseur compte.
e_datazoom(type = "slider") ajoute la commande de plage sous l’axe ; faites glisser ses poignées dans le graphique chargé pour zoomer sur n’importe quel groupe de voitures. C’est le genre d’exploration qui transforme un graphique dense d’illisible en utile.
Diagramme en barres des miles par gallon pour les 32 voitures, avec des étiquettes d’axe x pivotées. Faites glisser les poignées du curseur sous le graphique pour zoomer sur une plage de voitures.
NoteAfficher les données sous-jacentes
Les graphiques ci-dessus utilisent deux petites tables dérivées de mtcars. Le graphique groupé/empilé compte les voitures par cylindres et transmission :
Number of cars by cylinders and transmission.
cyl
Automatic
Manual
4
3
8
6
4
3
8
12
2
Les graphiques en barres et de zoom tracent mpg (miles par gallon) pour chaque modèle de voiture dans mtcars — 32 lignes de model et mpg, triées par ordre croissant.
Problèmes fréquents
Le graphique n’apparaît pas / la page n’affiche que le poster. C’est voulu sur ce site — cliquez sur ▶ Charger le graphique interactif et le véritable widget se charge. Dans votre propre document, print(e) (ou en laissant e être la dernière ligne d’un chunk) rend le widget directement, sans poster.
Mes barres sont verticales mais je les veux horizontales (ou inversement). Ajoutez ou retirez e_flip_coords(). Contrairement au coord_flip() de ggplot2, echarts4r inverse en échangeant les encodages x et y, donc ajoutez-le une seule fois après votre appel e_bar().
Mes deux séries se chevauchent au lieu d’être côte à côte. Chaque série a besoin de son propre appel e_bar(). Pour les empiler, donnez à chaque e_bar() le même argument stack = "name" ; pour les grouper, omettez stack. Mélanger les deux (certaines empilées, d’autres non) est ce qui cause généralement le chevauchement.
Questions fréquentes
Noteecharts4r est-il libre d’utilisation, même sur un site commercial ?
Oui. echarts4r est publié sous licence Apache 2.0 et enrobe Apache ECharts, qui est aussi sous Apache 2.0 — une licence permissive, libre et open source, sans frais par site ni frais commercial. Vous pouvez l’utiliser dans des rapports, des tableaux de bord et des sites publics sans licence payante.
NoteEn quoi echarts4r diffère-t-il de ggiraph ?
ggiraph rend vos graphiques ggplot2 existants interactifs en les produisant en SVG, de sorte que l’apparence est identique à ggplot2 et que le widget est léger. echarts4r dessine avec un moteur différent (Apache ECharts sur un canvas HTML) qui offre des interactions intégrées plus riches — curseurs de zoom, transitions animées, 3D, cartes — au prix d’une charge JavaScript plus lourde. Utilisez ggiraph quand vous voulez votre apparence ggplot de publication avec une interactivité légère ; optez pour echarts4r quand vous avez besoin de ces commandes intégrées plus riches.
NoteAi-je besoin du poster à charger au clic dans mes propres rapports ?
Non. Le poster est un choix de performance pour ce site à fort trafic, où plusieurs widgets lourds sur une même page le ralentiraient sur mobile. Dans votre propre document Quarto ou application Shiny, imprimez directement le widget et il s’affiche immédiatement. Le code echarts4r de cette leçon est exactement ce que vous écririez dans les deux cas.
NotePuis-je empiler et grouper des barres dans le même graphique ?
Oui. Les barres qui partagent un nom de stack s’empilent ensemble ; les barres avec des noms de stack différents (ou sans) se placent côte à côte. Vous pouvez donc créer des graphiques groupés-et-empilés en donnant à chaque groupe son propre nom de stack.
NoteComment trier les barres ?
echarts4r dessine les barres dans l’ordre des lignes de votre data frame. Triez d’abord le data frame — par exemple df[order(df$value), ] en R de base — et, pour un axe catégoriel, définissez la colonne comme un factor avec des levels dans cet ordre pour qu’ECharts le conserve.
Testez vos connaissances
ImportantÀ vous : construire un diagramme en barres groupées
En utilisant le jeu de données intégré mtcars, comptez les voitures par nombre de vitesses (gear) et transmission (am, où 1 correspond à la manuelle), puis dessinez un diagramme en barres groupées interactif avec echarts4r : une série de barres par type de transmission, des couleurs azur et ambre, et une infobulle déclenchée par l’axe. Affectez-le à une variable et imprimez-le pour le voir.
AstuceIndice
Construisez une table large avec table() + reshape(..., direction = "wide") (comme dans la leçon), puis enchaînez e_charts(gear) avec deux appels e_bar() — un par colonne de transmission. Définissez les couleurs avec e_color(c("#3a86d4", "#f5a524")) et l’infobulle avec e_tooltip(trigger = "axis").
Deux appels e_bar() sans argument stack donnent des barres côte à côte (groupées) ; survoler une catégorie affiche les deux effectifs grâce à trigger = "axis".
Vérification rapide. Vous avez e_bar(Automatic, stack = "g") et e_bar(Manual, stack = "g"). Les barres sont-elles groupées ou empilées ?
AstuceAfficher la réponse
Empilées. Les deux séries partagent le même nom de stack ("g"), donc ECharts empile Manual au-dessus de Automatic dans chaque catégorie. Retirez l’argument stack des deux pour les grouper côte à côte.
Conclusion
echarts4r transforme un diagramme en barres familier en un graphique explorable : e_charts() définit l’axe des catégories, e_bar() ajoute des barres, et un court pipe ajoute des infobulles, un curseur de zoom, et des dispositions groupées ou empilées. Le poster statique ggplot2 garde la page rapide ; un clic révèle le graphique interactif complet. À partir de là, la même grammaire de pipe s’étend aux graphiques en courbes, en nuage de points, et à bien d’autres types de graphiques.
@online{2026,
author = {},
title = {Diagrammes en barres et en colonnes interactifs en R avec
echarts4r},
date = {2026-07-09},
url = {https://www.datanovia.com/learn/data-visualization/echarts4r/interactive-bar-charts},
langid = {fr}
}