Graphique à barres et histogramme en R (avec exemple)
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 entre les groupes.
- Le second montre une statistique récapitulative (min, max, moyenne, etc.) d'une variable sur l'axe des y.
Vous utiliserez l'ensemble de données mtcars avec 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
Comment créer un graphique à barres
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()`
Dans ce tutoriel, vous vous intéressez à l'objet géométrique geom_bar() qui crée le graphique à barres.
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()
Explication du code
- Vous transmettez l'ensemble de données mtcars à ggplot.
- À l'intérieur de l'argument aes(), vous ajoutez l'axe des x comme variable factorielle (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`: Control the type of formatting. By default, `bin` to plot a count in the y-axis. For continuous value, 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()
Explication du code
- Les couleurs des barres sont contrôlées par le mappage aes() à l'intérieur de l'objet géométrique (c'est-à-dire pas dans ggplot()). Vous pouvez changer la couleur avec les 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()
Explication du code
- Pour augmenter/diminuer l'intensité de la barre, vous pouvez modifier la valeur de l'alpha. Un alpha élevé augmente l'intensité et un alpha faible la réduit. alpha va de 0 à 1. Si 1, alors la couleur est la même que celle de la palette. Si 0, la couleur est blanche. Vous choisissez alpha = 0.1.
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()
Explication du code
- L'argument fill à l'intérieur de aes() permet de changer la couleur de la barre. Vous changez la couleur en définissant la variable fill = axe x. Dans votre exemple, la variable de l'axe des x est cyl ; remplissage = facteur (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))
Vous avez l'ensemble de données prêt, vous pouvez tracer le graphique ;
# Étape 3
ggplot(data, aes(x = cyl, fill = am)) + geom_bar() + theme_classic()
Explication du code
- Le ggpplot() contient les données de l'ensemble de données et le aes().
- 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 :
Le mappage remplira la barre de deux couleurs, une pour chaque niveau. Il est facile de changer de groupe en choisissant d'autres variables factorielles 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()
Explication du code
- 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()
Explication du code
- position=position_dodge() : indique explicitement comment disposer les barres
Sortie :
Histogramme
Dans la deuxième partie du didacticiel sur les graphiques à barres, vous pouvez représenter le groupe de variables avec des valeurs sur l'axe des y.
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 prêt à communiquer pour être livré au client mais nous donne une intuition sur la tendance.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity")
Explication du code
- 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 devez passer l'argument stat="identity" pour faire référence à la variable sur l'axe des y en tant que valeur numérique. geom_bar utilise stat="bin" comme valeur par défaut.
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()
Explication du code
- 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()
Explication du code
- Vous pouvez tracer le graphique par groupes avec le mappage fill= cyl. R s'occupe automatiquement des couleurs en fonction des niveaux de cyl variable
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()
Explication du code
- L'argument width à l'intérieur de geom_bar() contrôle la taille de la barre. Une valeur plus grande augmente la largeur.
- Notez que vous stockez le graphique dans le graphique variable. Vous le faites car l’étape suivante ne modifiera pas le code du graphique variable. Cela améliore la lisibilité du code.
Sortie :
Étape 6) Ajouter des étiquettes au graphique
La dernière étape consiste à ajouter la valeur de la variable Mean_mpg dans le label.
graph + geom_text(aes(label = mean_mpg), hjust = 1.5, color = "white", size = 3) + theme_classic()
Explication du code
- 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
- hcontrôle simplement l'emplacement de l'étiquette. Les valeurs proches de 1 affichent l'étiquette en haut de la barre, et les valeurs plus élevées amènent l'étiquette en bas. Si l'orientation du graphique est verticale, 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 :
Résumé
Un graphique à barres est utile lorsque l'axe des X est une variable catégorielle. L'axe des y peut être soit un décompte, soit une statistique récapitulative. Le tableau ci-dessous résume comment contrôler le graphique à barres avec ggplot2 :
Objectif | Code |
---|---|
que vous avez |
ggplot(df, eas(x= factor(x1)) + geom_bar() |
Comptez avec différentes couleurs de remplissage |
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar() |
Compter avec des groupes, empilés |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
Comptez en groupes, côte à côte |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar() |
Compter avec des groupes, empilés en % |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
Nos valeurs |
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity") |