Diagramme à barres et histogramme en R avec exemple
⚡ Résumé intelligent
Les graphiques à barres et les histogrammes en R sont construits avec ggplot2, en utilisant geom_bar() pour les dénombrements catégoriels et geom_histogram() pour les distributions continues. Ce guide explique comment personnaliser la couleur, le groupe, etc.ping, l'empilement, l'orientation, le regroupement et les étiquettes dans les barres sur l'ensemble de données mtcars.

Qu'est-ce qu'un graphique à barres en R ?
Un graphique à barres est un excellent moyen d'afficher des variables catégorielles sur l'axe des X. Ce type de graphique désigne deux aspects sur l'axe des y.
- Le premier compte le nombre d'occurrences dans chaque groupe.
- La seconde présente une statistique récapitulative (minimum, maximum, moyenne, etc.) d'une variable sur l'axe des y.
Vous utiliserez l'ensemble de données mtcars, qui comporte les variables suivantes :
- cyl : Numéro du cylindre dans la voiture. Variable numérique
- am : Type de transmission. 0 pour automatique et 1 pour manuel. Variable numérique
- mpg : miles par gallon. Variable numérique
Étant donné la grande similarité des histogrammes, il est judicieux de clarifier la situation avant d'écrire la moindre ligne de code.
Graphique à barres vs histogramme dans R : principales différences
Les deux graphiques se ressemblent et sont constamment confondus. Ils répondent à des questions différentes et utilisent des objets géométriques différents.
| Critères | Bar Chart | Histogramme |
|---|---|---|
| Variable de l'axe X | Catégorique ou facteur | continu et numérique |
| Ce que représente un bar | Une catégorie | Un intervalle, ou classe, de valeurs |
| Espaces entre les barres | Oui, les catégories sont distinctes. | Non, les poubelles sont adjacentes |
| Commande de bar | Peut être réorganisé librement | Fixé par l'échelle numérique |
| Réponse à la question | Comment les groupes se comparent-ils ? | Comment une variable est-elle distribuée ? |
| objet ggplot2 | barre_géométrique() | géom_histogramme() |
En règle générale : si le réarrangement des barres reste pertinent, il s’agit d’un diagramme à barres. Si ce réarrangement en altère le sens, il s’agit d’un histogramme. Pour les résumés par quartile d’une même variable continue, utilisez un histogramme. boîte à moustaches.
Comment créer un graphique à barres avec R
Pour créer un graphique dans R, vous pouvez utiliser la bibliothèque ggplot qui crée des graphiques prêts à être publiés. La syntaxe de base de cette bibliothèque est :
ggplot(data, mapping = aes()) + geometric object arguments: data: dataset used to plot the graph mapping: Control the x and y-axis geometric object: The type of plot you want to show. The most common objects are: - Point: `geom_point()` - Bar: `geom_bar()` - Line: `geom_line()` - Histogram: `geom_histogram()`
Ce tutoriel se concentre sur l'objet géométrique geom_bar(), qui dessine le graphique à barres, et sur geom_histogram() pour les données continues.
Graphique à barres : nombre
Votre premier graphique montre la fréquence du cylindre avec geom_bar(). Le code ci-dessous est la syntaxe la plus basique.
library(ggplot2) # Most basic bar chart ggplot(mtcars, aes(x = factor(cyl))) + geom_bar()
Code Explication
- Vous transmettez l'ensemble de données mtcars à ggplot.
- Dans l'argument aes(), vous définissez l'axe des abscisses sur la variable de facteur cyl.
- Le signe + signifie que vous voulez que R continue à lire le code. Cela rend le code plus lisible en le cassant.
- Utilisez geom_bar() pour l'objet géométrique.
Sortie :
Note: assurez-vous de convertir les variables en facteur sinon R traite les variables comme numériques. Voir l'exemple ci-dessous.
Personnaliser le graphique
Quatre arguments peuvent être passés pour personnaliser le graphique :
- `stat`: Controls what is plotted on the y-axis. By default `count`, which tallies rows. To plot a value you already computed, pass `stat = "identity"`
- `alpha`: Control density of the color
- `fill`: Change the color of the bar
- `size`: Control the size the bar
Changer la couleur des barres
Vous pouvez changer la couleur des barres. Notez que les couleurs des barres sont toutes similaires.
# Change the color of the bars ggplot(mtcars, aes(x = factor(cyl))) + geom_bar(fill = "coral") + theme_classic()
Code Explication
- Les couleurs des barres sont contrôlées par la fonction aes().ping À l'intérieur de l'objet géométrique (c'est-à-dire pas dans la fonction ggplot()), vous pouvez modifier la couleur grâce aux arguments de remplissage. Ici, vous choisissez la couleur corail.
Sortie :
Vous pouvez utiliser ce code :
grDevices::colors()
pour voir toutes les couleurs disponibles dans R. Il existe environ 650 couleurs.
Changer l'intensité
Vous pouvez augmenter ou diminuer l'intensité de la couleur des barres
# Change intensity ggplot(mtcars, aes(factor(cyl))) + geom_bar(fill = "coral", alpha = 0.5) + theme_classic()
Code Explication
- Pour augmenter ou diminuer l'intensité de la barre, vous pouvez modifier la valeur de l'alpha. Une valeur élevée d'alpha augmente l'intensité, tandis qu'une valeur faible la diminue. L'alpha varie de 0 à 1. À 1, la couleur correspond exactement à celle de la palette ; à 0, la barre est invisible. Ici, vous choisissez alpha = 0.5.
Sortie :
Colorier par groupes
Vous pouvez changer les couleurs des barres, c'est-à-dire une couleur différente pour chaque groupe. Par exemple, la variable cyl a trois niveaux, vous pouvez alors tracer le graphique à barres avec trois couleurs.
# Color by group ggplot(mtcars, aes(factor(cyl), fill = factor(cyl))) + geom_bar()
Code Explication
- L'argument `fill` dans la fonction `aes()` modifie la couleur de la barre. Pour ce faire, définissez `fill` sur la variable de l'axe des abscisses. Dans votre exemple, la variable de l'axe des abscisses est `cyl` ; `fill = factor(cyl)`.
Sortie :
Ajouter un groupe dans les bars
Vous pouvez diviser davantage l'axe Y en fonction d'un autre niveau de facteur. Par exemple, vous pouvez compter le nombre de transmissions automatiques et manuelles en fonction du type de cylindre.
Vous procéderez comme suit :
- Étape 1 : Créer le bloc de données avec l'ensemble de données mtcars
- Étape 2 : Étiquetez la variable am avec auto pour la transmission automatique et man pour la transmission manuelle. Convertissez am et cyl en facteur afin de ne pas avoir besoin d'utiliser factor() dans la fonction ggplot().
- Étape 3 : Tracez le diagramme à barres pour compter le nombre de transmissions par cylindre
library(dplyr) # Step 1 data <- mtcars %>% #Step 2 mutate(am = factor(am, labels = c("auto", "man")), cyl = factor(cyl))
Une fois les données prêtes, vous pouvez tracer le graphique :
# Étape 3
ggplot(data, aes(x = cyl, fill = am)) + geom_bar() + theme_classic()
Code Explication
- L'appel à ggplot() reçoit les données du jeu de données et la carte aes()ping.
- Dans aes(), vous incluez la variable axe des x et quelle variable est requise pour remplir la barre (c'est-à-dire suis)
- geom_bar() : Créer le graphique à barres
Sortie :
La carteping La barre sera colorée en deux couleurs, une pour chaque niveau. Il est très facile de modifier le groupe en choisissant d'autres variables catégorielles dans l'ensemble de données.
Graphique à barres en pourcentage
Vous pouvez visualiser la barre en pourcentage au lieu du nombre brut.
# Graphique à barres en pourcentage
ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = "fill") + theme_classic()
Code Explication
- Utilisez position = "fill" dans l'argument geom_bar() pour créer un graphique avec un pourcentage sur l'axe y.
Sortie :
Barres côte à côte
Il est facile de tracer le graphique à barres avec la variable de groupe côte à côte.
# Bar chart side by side ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = position_dodge()) + theme_classic()
Code Explication
- position=position_dodge() : indique explicitement comment disposer les barres
Sortie :
Graphique à barres avec une statistique récapitulative
Dans la deuxième partie du tutoriel, l'axe des ordonnées affiche une valeur calculée plutôt qu'un décompte. Notez qu'il s'agit toujours d'un graphique à barres : un véritable histogramme, utilisant un objet géométrique différent, sera présenté plus loin.
Votre objectif est de créer un graphique avec le kilométrage moyen par gallon pour chaque type de cylindre. Pour dessiner un graphique informatif, vous suivrez ces étapes :
- Étape 1 : Créez une nouvelle variable avec le kilométrage moyen par gallon par cylindre
- Étape 2 : Créer un histogramme de base
- Étape 3 : Changer l'orientation
- Étape 4 : Changez la couleur
- Étape 5 : Changer la taille
- Étape 6 : Ajouter des étiquettes au graphique
Étape 1) Créer une nouvelle variable
Vous créez un bloc de données nommé data_histogram qui renvoie simplement la moyenne des miles par gallon en fonction du nombre de cylindres dans la voiture. Vous appelez cette nouvelle variable Mean_mpg et vous arrondissez la moyenne avec deux décimales.
# Étape 1
data_histogram <- mtcars %>% mutate(cyl = factor(cyl)) %>% group_by(cyl) %>% summarize(mean_mpg = round(mean(mpg), 2))
Étape 2) Créer un histogramme de base
Vous pouvez tracer l'histogramme. Il n'est pas encore assez abouti pour être présenté à un client, mais il montre déjà la tendance.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity")
Code Explication
- Le aes() a maintenant deux variables. La variable cyl fait référence à l'axe des x et moyenne_mpg à l'axe des y.
- Vous spécifiez `stat = "identity"` pour que `geom_bar()` utilise la variable de l'axe des ordonnées telle quelle au lieu de compter les lignes. La valeur par défaut de `geom_bar()` est `stat = "count"`.
Sortie :
Étape 3) Changer l'orientation
Vous modifiez l’orientation du graphique de verticale à horizontale.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity") + coord_flip()
Code Explication
- Vous pouvez contrôler l'orientation du graphique avec coord_flip().
Sortie :
Étape 4) Changer la couleur
Vous pouvez différencier les couleurs des barres en fonction du niveau de facteur de la variable de l'axe des x.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity") + coord_flip() + theme_classic()
Code Explication
- Vous pouvez tracer le graphique par groupes avec la carte fill= cylpingR gère automatiquement les couleurs en fonction des niveaux de la variable cyl.
Sortie :
Étape 5) Changer la taille
Pour rendre le graphique plus joli, vous réduisez la largeur de la barre.
graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity", width = 0.5) + coord_flip() + theme_classic()
Code Explication
- L'argument `width` dans la fonction `geom_bar()` contrôle l'épaisseur de la barre. Plus sa valeur est élevée, plus elle est large.
- Le graphique est stocké dans le graphe d'objets, car l'étape suivante le réutilise sans modification. Le stockage des graphiques intermédiaires préserve la lisibilité du code.
Sortie :
Étape 6) Ajouter des étiquettes au graphique
La dernière étape consiste à ajouter la valeur de mean_mpg comme étiquette à l'intérieur de chaque barre.
graph +
geom_text(aes(label = mean_mpg),
hjust = 1.5,
color = "white",
size = 3) +
theme_classic()
Code Explication
- La fonction geom_text() est utile pour contrôler l'esthétique du texte.
- label= : Ajouter une étiquette à l'intérieur des barres
- Mean_mpg : Utilisez la variable Mean_mpg pour le label
- La propriété `hjust` détermine la position de l'étiquette sur la barre. Les valeurs proches de 1 la placent vers l'extrémité de la barre, tandis que les valeurs plus élevées la déplacent vers l'axe. Si le graphique est vertical, remplacez `hjust` par `vjust`.
- color="white" : Change la couleur du texte. Ici, vous utilisez la couleur blanche.
- size=3 : Définissez la taille du texte.
Sortie :
Comment ordonner et étiqueter les barres d'un graphique à barres en R
Deux finitions distinguent un graphique provisoire d'un graphique publiable : le tri des barres par valeur et l'étiquetage correct des axes.
Réorganisation des barres. Par défaut, ggplot2 classe les niveaux de facteurs par ordre alphabétique, ce qui est rarement l'ordre le plus informatif. Utilisez la fonction `reorder()` pour trier selon une seconde variable :
# Sort the bars from lowest to highest mean_mpg ggplot(data_histogram, aes(x = reorder(cyl, mean_mpg), y = mean_mpg)) + geom_bar(stat = "identity", fill = "coral") + theme_classic()
Préfixez la variable de tri avec un signe moins, reorder(cyl, -mean_mpg), pour inverser la direction.
Ajout de titres et d'étiquettes d'axes. La fonction labs() définit chaque élément de texte en un seul appel :
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity") + labs(title = "Average fuel economy by cylinder count", subtitle = "mtcars dataset", x = "Number of cylinders", y = "Mean miles per gallon", fill = "Cylinders", caption = "Source: mtcars") + theme_classic()
Définissez fill = NULL dans labs() pour supprimer entièrement le titre de la légende, et utilisez theme(legend.position = “none”) pour supprimer la légende lorsque l'axe des x nomme déjà les groupes.
Choisir vos propres couleurs. Remplacez la palette par défaut par une palette explicite afin que le graphique corresponde à votre charte graphique :
scale_fill_manual(values = c("4" = "#0e9cd1", "6" = "coral", "8" = "grey40"))
Comment créer un histogramme en R avec geom_histogram()
Un histogramme illustre la distribution d'une variable continue. Au lieu de compter les catégories, ggplot2 divise l'intervalle numérique en classes et compte le nombre d'observations dans chaque classe.
library(ggplot2) # Most basic histogram ggplot(mtcars, aes(x = mpg)) + geom_histogram()
R affiche un message vous recommandant de choisir un nombre de classes plus approprié, car la valeur par défaut de 30 classes est arbitraire. Deux arguments permettent de contrôler ce paramètre :
- bacs: le nombre d'intervalles dans lesquels diviser la plage.
- largeur de caisse: la largeur de chaque intervalle, exprimée dans les unités de la variable. Utilisez cette option lorsque les unités sont pertinentes.
# Set the number of bins ggplot(mtcars, aes(x = mpg)) + geom_histogram(bins = 10, fill = "coral", color = "white") + theme_classic() # Or set the width of each bin instead ggplot(mtcars, aes(x = mpg)) + geom_histogram(binwidth = 4, fill = "coral", color = "white") + theme_classic()
Le choix du nombre de classes est primordial pour un histogramme. Un nombre insuffisant de classes masque des structures importantes, comme un second pic ; un nombre excessif rend le graphique illisible. Testez plusieurs valeurs avant d'en choisir une.
Comparaison de groupes. Attribuez un facteur de remplissage et définissez la position afin que les distributions restent lisibles :
ggplot(mtcars, aes(x = mpg, fill = factor(cyl))) + geom_histogram(bins = 10, position = "identity", alpha = 0.5) + theme_classic()
Avec `position = “identity”` et une valeur alpha réduite, les histogrammes se chevauchent, ce qui permet de comparer directement les formes. Utilisez `position = “dodge”` si vous préférez afficher les classes côte à côte.
La densité plutôt que le nombre de participants. Lorsque les groupes sont de tailles différentes, tracez la densité de manière à ce que les surfaces soient comparables et superposez une courbe lissée :
ggplot(mtcars, aes(x = mpg)) + geom_histogram(aes(y = after_stat(density)), bins = 10, fill = "coral", alpha = 0.6) + geom_density(color = "steelblue", linewidth = 1) + theme_classic()
Diagramme à barres et histogramme dans R : Code Références
Un graphique à barres convient à un axe des abscisses catégoriel, où l'axe des ordonnées représente soit un nombre, soit une statistique descriptive. Le tableau ci-dessous répertorie l'appel ggplot2 pour chaque variante présentée ci-dessus :
| Objectif | Code |
|---|---|
| que vous avez |
ggplot(df, aes(x = factor(x1))) + geom_bar() |
| Comptez avec différentes couleurs de remplissage |
ggplot(df, aes(x = factor(x1), fill = factor(x1))) + geom_bar() |
| Compter avec des groupes, empilés |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar() |
| Comptez en groupes, côte à côte |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = position_dodge()) |
| Compter avec des groupes, empilés en % |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = "fill") |
| Valeurs (statistiques récapitulatives) |
ggplot(df, aes(x = factor(x1), y = x2)) + geom_bar(stat = "identity") |
| Histogramme d'une variable continue |
ggplot(df, aes(x = x1)) + geom_histogram(bins = 30) |













