Data visualisation sous R : le piechart
Le diagramme en secteur sous R avec la librairie GGPlot2
Troisième article de cette série des principaux graphiques statistiques sous R avec cette
fois le diagramme en secteur ou piechart.
Le diagramme en secteur permet de présenter la proportion des différentes modalités d'une variable qualitative.
Le piechart est très visuel et particulièrement efficace pour comparer les effectifs entre eux.
Il existe plusieurs formes de piechart, chacune portant un nom spécifique (diagramme circulaire par exemple). Néanmoins
les informations présentées restent les mêmes.
Dans cet article nous allons nous concentrer sur la version de base et son implémentation avec la librairie ggplot2.
Pour rappel, comme à chaque fois, l'objectif n'est pas de passer en revue l'ensemble des options possibles mais simplement de vous donner un code simple qui fonctionne, que vous pourrez adapter à votre convenance.
Le chargement des données
Nous allons travailler sur la même série statistique que celle que nous avions utilisée pour le boxplot, à savoir les salaires de cadres
ayant répondu à une enquête dans le cadre de leur affiliation à une mutuelle. Pour rappel notre fichier comporte deux variables :
le salaire et le secteur d'activité du cadre.
C'est, bien sûr, cette dernière variable "Secteur d'activité" qui nous intéresse. Dans cet échantillon on dénombre quatre secteurs d'activité :
La construction, le transport, la restauration et la technologie.
Voici un extrait du fichier :
Id Salaire Secteur 1 15500 Restauration 2 20500 Restauration 3 21500 Restauration 4 23500 Transport 5 25500 Construction 6 25500 Construction
Chargeons nos données dans un dataframe "df_salaires" :
df_salaires <- read.table("salaires_par_secteur.csv", header = TRUE,
sep = ";",
quote = "\"",
fill = TRUE,
comment.char = "",
encoding="UTF-8")
Import de la librairie Ggplot2
Nous importons désormais la librairie Ggplot2 et paramétrons un thème (ici le "classic").
library(ggplot2)
theme_set(
theme_classic() +
theme(legend.position = "top")
)
Tableau des effectifs et des fréquences
Pour pouvoir tracer notre diagramme en secteur il nous faut résumer notre jeu de données brutes en tableau des effectifs puis en tableau des fréquences. L'instruction ci-dessous va nous donner la proportion des cadres par secteur d'activité :
freqTab <- round(prop.table(table(df_salaires$Secteur))*100,1)
freqTab <- as.data.frame(freqTab)
Une première instruction table nous permet de synthétiser les effectifs sur la variable secteur, la seconde instruction prop.table nous
donne les fréquences respectives. Nous multiplions, par ailleurs, par 100 puis effectuons un arrondi pour préparer, déjà, l'affichage des labels
sur notre graphique.
Enfin nous convertissons la table obtenue en dataframe afin de pouvoir alimenter la librairie ggplot.
Voici le contenu du dataframe "freqTab" :
Var1 Freq 1 Construction 44.7 2 Restauration 17.5 3 Technologie 15.5 4 Transport 22.3
Vous remarquez qu'étant donné que nous n'avons pas spécifié de noms de colonnes, R a renommé notre variable "Var1" et la fréquence associée "Freq". Nous pourrions tout à fait préciser un nom de colonne plus explicite.
Diagramme en secteur
Traçons maintenant notre diagramme en secteur.
sectorColor <- c("#00AFBB", "#E7B800", "#42FF33", "#FF3349")
ggplot(freqTab, aes(x="", y=Freq, fill=Var1)) +
geom_bar(stat="identity", width=1, color="white", alpha=0.4) +
coord_polar("y", start=0) +
scale_color_manual(values = sectorColor) +
scale_fill_manual(values = sectorColor) +
ggtitle("Repartition par secteur") +
geom_text(aes(label = paste(Freq,"%")),
position = position_stack(vjust = 0.5)) +
theme_void() +
theme(
plot.title = element_text(size=9, hjust = 0.5, face="bold", color="black"),
legend.title=element_blank())
Plusieurs points à noter dans ce code.
Nous définissons tout d'abord les couleurs de nos 4 modalités sous la forme de 4 codes hexadécimaux.
Ensuite, plusieurs instructions se suivent, séparées par le signe + . On retrouve la définition des données sources via d'une part,
le passage en paramètre du dataframe « freqTab », puis l'appel à la fonction "aes" qui aura pour rôle de mapper les données au graphique.
Nous définissons via geom_bar quelques aspects esthétiques, notamment la largeur de la bordure séparant les secteurs, sa couleur ainsi
qu'un facteur de transparence alpha pour le remplissage des secteurs.
L'instruction qui suit (coord_polar) est intéressante car elle nous indique qu'un diagramme en secteur n'est autre qu'un diagramme en barre
construit sur la base de coordonnées polaires.
Le reste consiste en de la mise en forme des textes et titre notamment.
Voici le résultat :

Retrouvez dans la rubrique "Nos datasets" toutes les données dont vous aurez besoin pour tester et pratiquer !