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.

  • (I.e. Distinction fondamentale : Un diagramme à barres résume une variable catégorielle, tandis qu'un histogramme divise une variable continue unique en intervalles.
  • 🧱 Grammaire des graphiques : Chaque graphique combine un ensemble de données et une carte aes()pinget un objet géométrique relié par le signe plus.
  • ???? Contrôle des couleurs : Placez la fonction fill à l'intérieur de geom_bar() pour obtenir une couleur uniforme, et à l'intérieur de aes() pour colorer les barres par groupe.
  • (I.e. Ajustements de position : position = “fill” convertit les comptes en pourcentages et position_dodge() place les barres groupées côte à côte.
  • (I.e. Représentation graphique des valeurs : Utilisez la valeur « identité » pour stat lorsque l’axe des ordonnées contient déjà une statistique calculée, telle qu’une moyenne de groupe.
  • (I.e. Regroupement des histogrammes : Définissez les classes ou la largeur des classes dans geom_histogram(), car la valeur par défaut de 30 classes convient rarement aux données.

Histogramme à barres en R

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.

  1. Le premier compte le nombre d'occurrences dans chaque groupe.
  2. 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 :

Graphique à barres : nombre

Note: assurez-vous de convertir les variables en facteur sinon R traite les variables comme numériques. Voir l'exemple ci-dessous.

Graphique à barres : nombre

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 :

Changer la couleur des barres

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 :

Changer l'intensité

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 :

Couleur par groupes

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 :

Ajouter un groupe dans les bars

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 :

Graphique à barres en pourcentage

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 :

Barres côte à côte

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 :

Histogramme

É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 :

Histogramme

É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 :

Histogramme

É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 :

Histogramme

É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 :

Histogramme

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)

FAQ

Utilisez un histogramme lorsque la variable de l'axe des abscisses est continue et que vous souhaitez visualiser sa distribution. Utilisez un diagramme à barres lorsque l'axe des abscisses comporte des catégories distinctes et que vous souhaitez les comparer.

Dans la fonction `aes()`, la variable `fill` est associée à une couleur, chaque groupe recevant ainsi sa propre teinte. En dehors de `aes()`, dans `geom_bar()`, `fill` est une valeur fixe appliquée à chaque barre.

Il n'existe pas de solution universelle. Commencez par la racine carrée du nombre d'observations, puis ajustez. Un nombre insuffisant de classes masque des structures telles qu'un second pic, tandis qu'un nombre excessif produit un graphique bruité et irrégulier.

Les histogrammes constituent la première étape standard de l'analyse exploratoire des données pour les projets d'IA ; ils révèlent les asymétries, les valeurs aberrantes et les déséquilibres de classes avant tout entraînement de modèle. Les diagrammes à barres permettent ensuite de synthétiser l'importance des caractéristiques et la fréquence des catégories.

Oui. Les assistants IA peuvent générer des couches ggplot2 à partir d'une simple description du graphique et expliquer les erreurs, comme l'absence d'un argument stat. Il est toujours conseillé de tester le code généré sur vos propres données pour confirmer la représentation.ping est juste.

Résumez cet article avec :