Histogrammes, densité et boîtes à moustaches interactifs en R avec echarts4r
Visualisez la dispersion, l’asymétrie et les valeurs aberrantes d’une variable numérique avec des histogrammes, des courbes de densité et des boîtes à moustaches interactifs
Montrez la forme d’une variable numérique avec echarts4r — un histogramme interactif, une courbe de densité lisse, et des boîtes à moustaches qui comparent quelques variables à la fois. Lisez les effectifs, les quartiles et les valeurs aberrantes au survol, le tout depuis un flux de travail avec pipe familier, chaque graphique se chargeant à la demande pour que la page reste rapide.
Date de publication
9 juillet 2026
Modifié
9 juillet 2026
AstucePoints clés
Les graphiques de distribution montrent la forme d’une seule variable numérique — où les valeurs se regroupent, à quel point elles sont dispersées, si elles sont asymétriques, et quels points sont des valeurs aberrantes.
echarts4r enveloppe Apache ECharts, une bibliothèque de graphiques JavaScript libre et open source, dans un pipe R soigné : e_histogram() pour les effectifs, e_density() pour une courbe lisse, et e_boxplot() pour comparer quelques variables côte à côte.
Le survol révèle les chiffres qu’une image statique cache — l’effectif d’une barre, la hauteur d’une courbe, la médiane d’une boîte, les quartiles et les valeurs aberrantes.
Sur cette page, chaque graphique interactif se cache derrière une image statique que vous cliquez pour charger — la lourde bibliothèque de graphiques ne se télécharge qu’à la demande, de sorte que la page reste dans le budget de performance mobile.
L’image statique est un simple graphique ggplot2, produit par du code que vous pouvez copier et exécuter — la version interactive reprend les mêmes données, rendues explorables.
Introduction
Avant de tester ou de modéliser une variable numérique, vous en regardez la forme. Est-elle symétrique ou asymétrique ? Un pic ou deux ? Y a-t-il des valeurs aberrantes cachées dans la queue ? Trois graphiques répondent à cela : un histogramme regroupe les valeurs en classes et les compte, une courbe de densité lisse ces effectifs en une forme continue, et une boîte à moustaches compresse la distribution en sa médiane, ses quartiles et ses valeurs aberrantes pour que vous puissiez aligner quelques variables d’un coup d’œil.
Vous les dessinez déjà avec ggplot2. Cette leçon conserve cette base statique et ajoute de l’interactivité avec echarts4r, qui apporte Apache ECharts — une bibliothèque de graphiques mature, libre et open source — dans R avec un flux de travail avec pipe qui vous semblera familier si vous connaissez le tidyverse. Nous construisons trois graphiques : un histogramme et une courbe de densité interactifs pour les temps d’attente entre éruptions d’Old Faithful, puis des boîtes à moustaches comparant les quatre mesures de la fleur d’iris.
NotePourquoi chaque graphique se charge au clic
Un widget ECharts interactif embarque environ 1 Mo de JavaScript et dessine sur un canvas HTML (une surface de dessin en pixels dans le navigateur, redessinée au fur et à mesure que vous survolez ou zoomez). En charger plusieurs à la fois rendrait la page lente sur un téléphone et nuirait à son Largest Contentful Paint (LCP) — le temps jusqu’à l’apparition de l’image principale. Ainsi, sur cette page, chaque graphique interactif est d’abord représenté par une image statique ; cliquer sur ▶ Load interactive chart insère le véritable widget echarts4r. Vous obtenez la vitesse d’une page statique et une interactivité complète à la demande. Dans votre propre rapport ou application Shiny, vous imprimeriez directement le widget — le code est identique.
La base statique : un histogramme ggplot2
Nous commençons avec le jeu de données intégré faithful et sa colonne waiting — les minutes entre les éruptions du geyser Old Faithful. Un histogramme regroupe ces temps d’attente en classes et compte combien tombent dans chaque classe. Voici la base statique ggplot2, qui est aussi l’image à chargement rapide que cette page affiche en premier.
library(ggplot2)# One numeric variable, self-contained (base R — no dplyr needed)f <-data.frame(waiting = faithful$waiting)ggplot(f, aes(waiting)) +geom_histogram(binwidth =3, fill ="#3a86d4", colour ="white") +labs(x ="Waiting time (minutes)", y ="Count",title ="Old Faithful waiting times are bimodal") +theme_minimal(base_size =13)
La série unique en azur #3a86d4 et theme_minimal() la gardent nette et prête à publier. La forme raconte déjà une histoire : deux pics, près de 55 et 80 minutes — le geyser a deux rythmes d’éruption. Rendons maintenant la même vue explorable.
Un histogramme interactif
echarts4r lit un data frame ; vous démarrez un graphique avec e_charts() et ajoutez une série d’effectifs par classe avec e_histogram(), en nommant la colonne numérique. Le pipe (|>) enchaîne les étapes, exactement comme l’ajout de couches dans ggplot2. Nous assignons le graphique à hist_chart plutôt que de l’imprimer directement, de sorte que la page reste légère — puis nous le chargeons derrière l’image statique ci-dessous.
library(echarts4r)f <-data.frame(waiting = faithful$waiting)hist_chart <- f |>e_charts() |># start a chart (no x column for a histogram)e_histogram(waiting, name ="Waiting") |># bin `waiting` and counte_color("#3a86d4") |># brand azure, matching the static charte_tooltip() |># show a tooltip on hovere_x_axis(name ="Waiting time (min)") |>e_y_axis(name ="Count") |>e_legend(show =FALSE) # one series — no legend needed
Lisez le pipe de haut en bas : démarrer un graphique, regrouper waiting en classes dans une série d’effectifs nommée « Waiting », la colorer en azur, activer les infobulles au survol et étiqueter les axes. Contrairement à e_bar(), e_histogram() fait le regroupement en classes pour vous. Enregistrons maintenant le widget et affichons-le derrière une image statique.
Histogramme des temps d’attente entre éruptions d’Old Faithful montrant deux pics. Survolez une barre pour lire combien d’éruptions tombent dans cette classe de temps d’attente.
Survolez une barre et ECharts affiche l’effectif exact de cette classe — le nombre qu’un histogramme statique vous oblige à estimer. Les deux regroupements de temps d’attente sont désormais quelque chose que vous pouvez lire directement, pas seulement estimer à l’œil.
Une courbe de densité lisse
La forme d’un histogramme dépend de sa largeur de classe. Une courbe de densité supprime ce choix : elle lisse les valeurs en une estimation continue de l’endroit où elles se concentrent, de sorte que les deux bosses se lisent comme deux pics lisses. Remplacez e_histogram() par e_density() sur la même colonne.
f <-data.frame(waiting = faithful$waiting)density_chart <- f |>e_charts() |>e_density(waiting, name ="Density",areaStyle =list(opacity =0.15)) |># light fill under the curvee_color("#3a86d4") |>e_tooltip(trigger ="axis") |># one tooltip that follows the x positione_x_axis(name ="Waiting time (min)") |>e_y_axis(name ="Density") |>e_legend(show =FALSE)
e_density() estime la courbe lisse ; areaStyle = list(opacity = 0.15) remplit légèrement en dessous pour que la forme se lise clairement. e_tooltip(trigger = "axis") affiche la densité à n’importe quel x que vous survolez, plutôt que seulement lorsque vous tombez exactement sur la ligne. Les deux pics que les classes de l’histogramme laissaient deviner sont maintenant sans équivoque.
Courbe de densité des temps d’attente d’Old Faithful avec deux bosses. La courbe lisse montre les deux regroupements de temps d’attente.
La densité est le meilleur choix quand vous voulez la forme sans l’argument de largeur de classe ; un histogramme est préférable quand vous voulez les effectifs réels. Ils répondent à des questions légèrement différentes sur les mêmes données — vous pouvez même dessiner les deux ensemble sur un second axe y avec e_density(..., y_index = 1).
Boîtes à moustaches pour comparer quelques variables
Une boîte à moustaches compresse une distribution en cinq nombres — la médiane, les quartiles inférieur et supérieur, les moustaches et les éventuelles valeurs aberrantes — ce qui en fait le moyen naturel de comparer plusieurs variables sur un seul axe. Ici, nous comparons les quatre mesures de l’iris. La manière base-R d’obtenir plusieurs séries (sans dplyr::group_by()) consiste en un appel e_boxplot() par colonne : chaque colonne numérique devient sa propre boîte.
d <- iris[, 1:4] # the four numeric measurements, one box eachbox_chart <- d |>e_charts() |>e_boxplot(Sepal.Length, name ="Sepal.Length") |>e_boxplot(Sepal.Width, name ="Sepal.Width") |>e_boxplot(Petal.Length, name ="Petal.Length") |>e_boxplot(Petal.Width, name ="Petal.Width") |>e_color(c("#440154", "#31688e", "#35b779", "#fde725")) |># viridis, colourblind-safee_tooltip() |>e_y_axis(name ="Measurement (cm)") |>e_legend(show =FALSE)
Chaque e_boxplot() ajoute une boîte, nommée d’après sa colonne ; echarts4r calcule les quartiles et les valeurs aberrantes pour vous. Les quatre boîtes utilisent une palette viridis adaptée au daltonisme pour que les groupes restent distincts pour chaque lecteur. Enregistrons-la et affichons l’image statique.
Boîtes à moustaches des quatre mesures de la fleur d’iris côte à côte. Survolez une boîte pour lire la médiane, les quartiles et les éventuelles valeurs aberrantes.
Survolez n’importe quelle boîte et ECharts affiche sa médiane, ses quartiles et ses valeurs de moustaches exactes — et survoler un point isolé vous indique quelle observation est une valeur aberrante. Les mesures des pétales sont plus basses et plus resserrées que celles des sépales, un contraste que la boîte à moustaches rend évident d’un coup d’œil.
NoteAfficher les données sous-jacentes
Les graphiques d’histogramme et de densité utilisent une seule colonne, faithful$waiting (272 temps d’attente en minutes) :
Five-number summary of Old Faithful waiting times (minutes).
Min.
1st Qu.
Median
Mean
3rd Qu.
Max.
43
58
76
70.89706
82
96
Les boîtes à moustaches utilisent les quatre colonnes numériques d’iris (150 lignes), résumées ici :
Summary of the four iris measurements (cm).
Sepal.Length
Sepal.Width
Petal.Length
Petal.Width
Min.
4.300000
2.000000
1.000
0.100000
1st Qu.
5.100000
2.800000
1.600
0.300000
Median
5.800000
3.000000
4.350
1.300000
Mean
5.843333
3.057333
3.758
1.199333
3rd Qu.
6.400000
3.300000
5.100
1.800000
Max.
7.900000
4.400000
6.900
2.500000
Problèmes fréquents
Mon histogramme a trop ou trop peu de barres. echarts4r choisit automatiquement un nombre de classes. Fixez-le vous-même avec e_histogram(waiting, breaks = 20) pour des barres plus nombreuses et granulaires, ou un nombre plus petit pour une vue plus grossière — le même compromis que binwidth dans ggplot2.
Le graphique n’apparaît pas / la page n’affiche que l’image statique. C’est voulu sur ce site — cliquez sur ▶ Charger le graphique interactif et le véritable widget se charge. Dans votre propre document, print(hist_chart) (ou en laissant le graphique comme dernière ligne d’un chunk) l’affiche directement, sans image statique.
Ma boîte à moustaches n’affiche qu’une seule boîte. Chaque variable a besoin de son propre appel e_boxplot(). e_charts() démarre sans colonne x, puis vous ajoutez un e_boxplot(column) par variable que vous voulez comparer — quatre appels donnent quatre boîtes.
Questions fréquentes
NoteQuand dois-je utiliser un histogramme, un graphique de densité ou une boîte à moustaches ?
Utilisez un histogramme quand vous voulez les effectifs réels de chaque classe et une idée concrète de la taille d’échantillon ; un graphique de densité quand vous voulez la forme lisse de la distribution sans choisir de largeur de classe ; et une boîte à moustaches quand vous voulez comparer la dispersion et les valeurs aberrantes de plusieurs variables (ou groupes) de façon compacte sur un seul axe. Ce sont trois vues de la même idée — la forme d’une variable numérique.
NoteComment changer le nombre de classes de l’histogramme dans echarts4r ?
Passez breaks à e_histogram(), par exemple e_histogram(waiting, breaks = 20). echarts4r regroupe les données en classes avant de dessiner, donc breaks contrôle le nombre de barres à peu près comme binwidth/bins le font dans le geom_histogram() de ggplot2.
NotePuis-je superposer une courbe de densité à un histogramme ?
Oui. Enchaînez les deux sur le même graphique et envoyez la densité sur un second axe y pour que les échelles ne s’entrechoquent pas : e_charts() |> e_histogram(waiting) |> e_density(waiting, y_index = 1). L’histogramme garde son axe des effectifs à gauche et la densité son propre axe à droite.
NoteComment une boîte à moustaches echarts4r marque-t-elle les valeurs aberrantes ?
e_boxplot() calcule les quartiles et les moustaches avec la règle de Tukey standard (les moustaches atteignent 1.5× l’écart interquartile) et dessine tout point au-delà d’une moustache comme un marqueur de valeur aberrante distinct. Survolez une valeur aberrante pour en lire la valeur.
Noteecharts4r est-il libre d’utilisation, même sur un site web commercial ?
Oui. echarts4r est publié sous la licence Apache 2.0 et enveloppe Apache ECharts, également en Apache 2.0 — une licence permissive, libre et open source, sans frais par site ni frais commerciaux.
Testez vos connaissances
ImportantÀ votre tour : comparez des distributions avec une boîte à moustaches
En utilisant le jeu de données intégré mtcars, dessinez une boîte à moustaches interactive avec echarts4r comparant deux variables sur le même axe : les miles par gallon (mpg) et la puissance en chevaux divisée par 10 (hp / 10, pour la ramener à une échelle similaire). Donnez à chaque boîte sa propre couleur et activez une infobulle au survol. Assignez-la à une variable et imprimez-la pour la visualiser.
AstuceIndice
Construisez d’abord un petit data frame avec les deux colonnes (data.frame(mpg = mtcars$mpg, hp10 = mtcars$hp / 10)), puis enchaînez e_charts() avec un appel e_boxplot() par colonne. Définissez les couleurs avec e_color(c("#3a86d4", "#f5a524")) et ajoutez e_tooltip().
Chaque e_boxplot() ajoute une boîte ; en survoler une affiche sa médiane, ses quartiles et ses valeurs aberrantes.
Vérification rapide. Vous voulez la forme lisse d’une seule variable numérique sans décider d’une largeur de classe. Vers quelle fonction echarts4r vous tournez-vous ?
AstuceAfficher la réponse
e_density(). Elle estime une courbe de densité lisse, il n’y a donc pas de choix de largeur de classe. Utilisez e_histogram() quand vous voulez plutôt spécifiquement les effectifs de chaque classe.
Conclusion
echarts4r transforme les trois graphiques de distribution incontournables en graphiques explorables : e_histogram() pour les effectifs, e_density() pour une forme lisse, et e_boxplot() pour comparer quelques variables côte à côte — chacun un court pipe avec une infobulle au survol. L’image statique ggplot2 garde la page rapide ; un clic révèle le graphique interactif complet. Copiez n’importe quel bloc et exécutez-le pour reproduire ces graphiques dans votre propre session.
Graphiques interactifs avec ggiraph — rendez vos graphiques ggplot2 existants interactifs en les affichant en SVG, quand vous voulez l’apparence de publication de ggplot avec une interactivité plus légère.
@online{2026,
author = {},
title = {Histogrammes, densité et boîtes à moustaches interactifs en R
avec echarts4r},
date = {2026-07-09},
url = {https://www.datanovia.com/learn/data-visualization/echarts4r/interactive-distribution-charts},
langid = {fr}
}