10 Diagramme : Bar Chart
10.1 Avant-propos
Cette section est dédiée à comment faire des bar charts.
10.2 tl;dr
Je veux un exemple sympa. Pas demain, pas après le p’tit dej. Tout de suite !!
Voici un bar chart qui montre le taux de survie des passagers à bord du RMS Titanic :
Et voilà le code :
library(datasets) # data
library(ggplot2) # plotting
library(dplyr) # manipulation
# Combine Children and Adult stats together
ship_grouped <- as.data.frame(Titanic) %>%
group_by(Class, Sex, Survived) %>%
summarise(Total = sum(Freq))
ggplot(ship_grouped, aes(x = Survived, y = Total, fill = Sex)) +
geom_bar(position = "dodge", stat = "identity") +
geom_text(aes(label = Total), position = position_dodge(width = 0.9),
vjust = -0.4, color = "grey68") +
facet_wrap(~Class) +
# formatting
ylim(0, 750) +
ggtitle("Don't Be A Crew Member On The Titanic",
subtitle = "Survival Rates of Titanic Passengers by Class and Gender") +
scale_fill_manual(values = c("#b2df8a", "#a6cee3")) +
labs(y = "Passenger Count", caption = "Source: titanic::titanic_train") +
theme(plot.title = element_text(face = "bold")) +
theme(plot.subtitle = element_text(face = "bold", color = "grey35")) +
theme(plot.caption = element_text(color = "grey68"))
Pour plus d’inforamtion sur le jeu de données, tapez ?datasets::Titanic
dans le terminal.
10.3 Exemples simples
J’ai eu les yeux plus gros que le ventres. Plus simple svp !
Utilisons plutôt le jeu de données HairEyeColor
. Pour commencer, nous allons juste regarder les différents catégories de couleurs de cheveux au sein de la population féminine :
colors <- as.data.frame(HairEyeColor)
# just female hair color, using dplyr
colors_female_hair <- colors %>%
filter(Sex == "Female") %>%
group_by(Hair) %>%
summarise(Total = sum(Freq))
# take a look at data
head(colors_female_hair)
## # A tibble: 4 x 2
## Hair Total
## <fct> <dbl>
## 1 Black 52
## 2 Brown 143
## 3 Red 37
## 4 Blond 81
Maintenant faisons quelques graphiques avec ces données.
10.3.1 Bar chart avec la base R
barplot(colors_female_hair[["Total"]],
names.arg = colors_female_hair[["Hair"]],
main = "Bar Graph Using Base R")
Nous recommendons la base R uniquement pour les bar chart simples ou pour votre usage personnel. Comme tous les autres graphiques la base R est simple à mettre en oeuvre. Note : La base R requière un vecteur ou une matrice, en d’autres termes l’objet avec doubles crochets dans l’appel à barplot (qui permet de récupérer les colones comme des listes).
10.3.2 Bar chart avec ggplot2
library(ggplot2) # plotting
ggplot(colors_female_hair, aes(x = Hair, y = Total)) +
geom_bar(stat = "identity") +
ggtitle("Bar Graph Using ggplot2")
Les bar chart sont très simple avec ggplot2
. Il suffit de lui passer en argument un dataframe et les différentes aesthetics qui vous intéresse. Note : Dans ce cas, on a une table de valeurs et on veut explicitement représenter des barres par en hauteur. A cause de ça, on précise l’aesthetic y comme colonne Total
, mais on doit également spécifier stat = "identity"
dans geom_bar()
pour que le module sache ce qu’il faut afficher et le faire correctement. Souvent vous aurez des jeux de données où chaque ligne est une observation et vous voudrez les grouper dans les barres. Dans ce cas là l’aesthetic y et stat = "identity"
n’auront pas besoin d’être précisé.
10.4 Théorie
- Pour plus d’info sur l’affichage des données de type catégorielle, regardez Chapter 4 dans le livre.
10.5 Quand utiliser ?
Les bar charts s’utilisent essentiellement pour les données catégorielles. Souvent vous aurez une collection de facteurs que vous voudrez diviser en différents groupes.
10.6 Considérations
10.6.1 Pas pour les données continues..
Si vous trouvez que votre bar chart n’a pas un aspect agréable, vérifiez que vous données sont bien catégorielles et pas continues. Si vous voulez afficher des données continues avec des barres, c’est le job des histogrammes
10.7 Modifications
ces modifications suppose l’utilisation de ggplot2
.
10.7.1 Inversion des barres
Pour inverser l’orientation des barres, ajouter un coord_flip()
:
10.7.2 Reordonner les barres
En base R comme avec ggplot2 les barres apparaissent par ordre alphabétique. Regardez ce tutoriel pour une explication détaillée sur comment les barres doivent être ordonnées dans un bar chart, et comment le package forecats peut vous y aider.
10.7.3 Facet Wrap
Vous pouvez séparer un graphique en plusieurs petit sous-graphique en utilisant facet_wrap()
(n’oubliez pas le tilde, ~):
10.8 Ressources externes
- Cookbook for R: Discussion sur comment réordonner les niveau d’un facteur.
- DataCamp Exercise: Exercice simple sur comment faire des bar chart avec
ggplot2
. - ggplot2 cheatsheet: Toujours bon d’y jeter un oeil.
with