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 ascending
cars <- tail(cars, 10)                  # keep the 10 most efficient
cars$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)

A horizontal bar chart of miles per gallon for eight car models, sorted from lowest to highest, in brand-azure bars.

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) axis
  e_bar(mpg, name = "MPG") |>     # a bar series from the mpg column
  e_color("#3a86d4") |>           # brand azure, matching the static chart
  e_flip_coords() |>              # horizontal bars (swap x/y), like coord_flip()
  e_tooltip() |>                  # show a tooltip on hover
  e_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 reshape
names(wide) <- c("cyl", "Automatic", "Manual")

grouped <- wide |>
  e_charts(cyl) |>
  e_bar(Automatic) |>
  e_bar(Manual) |>
  e_color(c("#3a86d4", "#f5a524")) |>          # azure + amber
  e_tooltip(trigger = "axis") |>               # one tooltip for the whole category
  e_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 -> stacked
  e_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.

all_cars <- data.frame(model = rownames(mtcars), mpg = mtcars$mpg)
all_cars <- all_cars[order(all_cars$mpg), ]
all_cars$model <- factor(all_cars$model, levels = all_cars$model)

zoom <- all_cars |>
  e_charts(model) |>
  e_bar(mpg, name = "MPG") |>
  e_color("#3a86d4") |>
  e_tooltip() |>
  e_legend(show = FALSE) |>
  e_datazoom(type = "slider") |>               # draggable zoom slider
  e_x_axis(axisLabel = list(rotate = 45))      # rotate crowded labels

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.

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

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.

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.

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.

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.

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

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.

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").

library(echarts4r)
tab <- as.data.frame(table(gear = mtcars$gear,
                           trans = ifelse(mtcars$am == 1, "Manual", "Automatic")))
wide <- reshape(tab, idvar = "gear", timevar = "trans", direction = "wide")
names(wide) <- c("gear", "Automatic", "Manual")

wide |>
  e_charts(gear) |>
  e_bar(Automatic) |>
  e_bar(Manual) |>
  e_color(c("#3a86d4", "#f5a524")) |>
  e_tooltip(trigger = "axis") |>
  e_x_axis(name = "Gears") |>
  e_y_axis(name = "Number of cars")

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 ?

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.

Leçons connexes

Cette page vous a-t-elle été utile ?

Prouvez que vous savez le faire. Maîtrisez toute la série echarts4r — suivez votre parcours, construisez des projets et obtenez un certificat.

Commencer gratuitement →

Passez à Pro — Prova illimité sur vos propres données et un certificat vérifiable qui atteste la compétence.

dès 15 $/mois facturé annuellement

Passer à Pro →

✓ Vous êtes Pro — continuez. The runtime is the judge.

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

Réutilisation

Citation

BibTeX
@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}
}
Veuillez citer ce travail comme suit :
“Diagrammes en barres et en colonnes interactifs en R avec echarts4r.” 2026. July 9. https://www.datanovia.com/learn/data-visualization/echarts4r/interactive-bar-charts.