Visualisation des données avec ggplot2
Visualisation des données avec ggplot2
avec ggplot2()
2024-04-03
1
Figure 1: Grammar of graphics in ggplot2()
2
1) La composante esthétique (aes)
a) Ajout d’élèments de Base (titre)
Pour que les noms de nos variables correspondent au nom de nos axes, il nous suffit d’utiliser la commande
aes(x=variable1,y=Variable2) dans le cas de graphiques bivariés
Base %>% filter(s03q32==1) %>%
ggplot(aes(x= Mode_remb))+geom_bar()
Base %>% filter(s03q12==1 & s03q13 >0 & s03q18 >0) %>%
ggplot(aes(x= s03q13, y=s03q18))+
geom_point()
600
400
count
200
Privé (individuel) Etat/programme Etat employeur Employeur Autre (à préciser) Etat et privé
Mode_remb
3
3e+05
s03q18
2e+05
1e+05
0e+00
NB: Pour représenter les titres, il est possible d’utiliser la commande labs
Base %>% filter(s03q32==1) %>%
ggplot(aes(x= Mode_remb))+geom_bar()+
labs(x="mode_de_remboursement")
Base %>% filter(s03q12==1 & s03q13 >0 & s03q18 >0) %>%
ggplot(aes(x=s03q13,y=s03q18 ))+
geom_point()+
labs(title="Titre_En_utilisant_la_commande_labs",
x= "frais_consultation",y="frais_médicaments")
4
600
400
count
200
Privé (individuel) Etat/programme Etat employeur Employeur Autre (à préciser) Etat et privé
mode_de_remboursement
Titre_En_utilisant_la_commande_labs
3e+05
frais_médicaments
2e+05
1e+05
0e+00
b) le mappage color
Dans ggplot2, le mappage color (ou colour) de la composante aes est utilisé pour attribuer une couleur
différente à chaque niveau (modalité) d’une variable catégorielle qui est la variable de mappage.
5
Base$Mode_remb <- factor(Base$s03q34,
labels= names(attr(Base$s03q34, "labels")),
levels=unname(attr(Base$s03q34, "labels")))
#Ceux qui ont une couverture maladie
Base %>% filter(s03q32==1) %>%
ggplot()+
geom_bar(aes(x= Mode_remb ,color=Mode_remb) ,fill="white")
600
Mode_remb
400 Privé (individuel)
Etat/programme
count
Etat employeur
Employeur
Privé (individuel)
Etat/programme
Etat employeurEmployeur
Autre (à préciser)
Etat et privé
Mode_remb
c) le mappage shape
Dans ggplot2, le mappage shape est utilisé pour attribuer une forme différente à chaque niveau d’une variable
catégorielle.
#'s03q12 : A consulté un service de santé ou
#' un guérisseurau cours des 3 derniers mois?
#'s03q13: Mtant des frais consultation d’un
#'médecin généraliste des 3 derniers mois?
#'s03q18 : Montant des frais de
#'médicaments des 3 derniers mois?
#'
Base$Reg_rec <- factor(Base$s00q01,
labels= names(attr(Base$s00q01, "labels")),
levels=unname(attr(Base$s00q01, "labels")))
Base %>% filter(s03q12==1 & s03q13 >0 & s03q18 >0) %>%
ggplot()+
geom_point(aes(x= s03q13, y=s03q18,shape= Reg_rec))
6
Reg_rec
DAKAR
ZIGUINCHOR
3e+05 DIOURBEL
SAINT−LOUIS
TAMBACOUNDA
KAOLACK
s03q18
2e+05
THIES
LOUGA
FATICK
1e+05 KOLDA
MATAM
KAFFRINE
KEDOUGOU
0e+00
SEDHIOU
0 25000 50000 75000
s03q13
Ainsi, utiliser shape = Reg_rec fera que chaque région sera représentée par une forme de point différente
sur le graphique. NB Ce code pose problème car il y’a des modélités de la variable Reg_rec qui n’ont pas
été représentées sur le graphique par des formes. Cela est du au fait que le mappage shape ne propose au
maximum que 6 formes différentes alors que notre variable Reg_rec comporte 14 modalités, ce qui fait que
les 6 sont représentées par une forme et les 8 restantes semblent « invisibles » sur le graphique (sans forme).
Une solution serait de définir nos formes manuellement. A noter également que les deux esthétiques shape
et color jouent des roles similaires, ce que color fait par les couleurs, shape le fait par les formes.
d) le mappage size
L’esthétique size contrôle la taille des points. Elle détermine la taille physique des points sur le graphique.
Vous pouvez utiliser size pour représenter une variable, par exemple, en ajustant la taille des points en
fonction de la valeur de cette variable. Cela peut être utile pour mettre en évidence les différences dans les
données, comme montrer des points plus grands pour des valeurs plus importantes ou plus extrêmes.
Base %>% filter(s03q12==1 & s03q13 >0 & s03q18 >0) %>%
ggplot()+
geom_point(aes(x= s03q13, y=s03q18,size= Reg_rec))
7
Reg_rec
DAKAR
ZIGUINCHOR
3e+05 DIOURBEL
SAINT−LOUIS
TAMBACOUNDA
KAOLACK
s03q18
2e+05
THIES
LOUGA
FATICK
1e+05 KOLDA
MATAM
KAFFRINE
KEDOUGOU
0e+00
SEDHIOU
0 25000 50000 75000
s03q13
e) le mappage alpha
L’esthétique alpha contrôle la transparence des points. Elle va de 0 à 1, où 0 signifie complètement trans-
parent (invisible) et 1 signifie complètement opaque (visible). En utilisant alpha, nous pouvons rendre les
points plus ou moins transparents en fonction de la valeur de la variable associée.
#'s03q12 : A consulté un service de santé ou
#'un guérisseur au cours des 3 drnrs mois?
Base %>% filter(s03q12==1 & s03q13 >0 & s03q18 >0) %>%
ggplot()+
geom_point(aes(x= s03q13, y=s03q18,alpha=Reg_rec))
8
Reg_rec
DAKAR
ZIGUINCHOR
3e+05 DIOURBEL
SAINT−LOUIS
TAMBACOUNDA
KAOLACK
s03q18
2e+05
THIES
LOUGA
FATICK
1e+05 KOLDA
MATAM
KAFFRINE
KEDOUGOU
0e+00
SEDHIOU
0 25000 50000 75000
s03q13
f) Le mappage fill
L’esthétique fill est utilisée pour remplir l’intérieur de graphiques avec une couleur. Cela est couramment
utilisé avec des géométries telles que les barres dans les graphiques à barres ou les aires sous les courbes dans
les graphiques de lignes ou d’aires.
Base %>% filter(s03q32==1) %>%
ggplot(aes(x= Mode_remb ,fill=Mode_remb ))+geom_bar()
9
600
Mode_remb
400 Privé (individuel)
Etat/programme
count
Etat employeur
Employeur
Privé (individuel)
Etat/programme
Etat employeurEmployeur
Autre (à préciser)
Etat et privé
Mode_remb
10
factor(s00q01)
600
1
2
3
4
400 5
6
count
7
8
200 9
10
11
12
13
0
14
Privé (individuel)
Etat/programme
Etat employeur EmployeurAutre (à préciser)
Etat et privé
Mode_remb
2) La composante theme
La composante theme est utilisée pour contrôler l’apparence de différents éléments dans notre graphique
tels que les axes, les légendes, les titres, les marges, etc. Elle comprend 4 parties les elements de theme, les
fonctions d’élèment, la foncction theme et les thèmes complets.
La composante theme est utilisée pour contrôler l’apparence de différents éléments dans notre graphique tels
que les axes, les légendes, les titres, les marges, etc. Elle nous permet de personnaliser l’apparence visuelle
de notre graphique pour correspondre à nos besoins ou à nos préférences esthétiques. Dans ggplot2, la
composante thématique est constituée de 4 parties principales : - Éléments de thème : Ce sont les composants
individuels que nous pouvons contrôler pour personnaliser l’apparence de notre graphique. Par exemple,
[Link] contrôle le titre du graphique, [Link].x contrôle les graduations sur l’axe des x, [Link]
contrôle la hauteur des clés dans la légende, etc. - Fonctions d’élément : Chaque élément de thème est associé
à une fonction spécifique qui décrit les propriétés visuelles de cet élément. Par exemple, element_text() est
utilisé pour définir la taille, la couleur et le style des élèments de texte tels que [Link]. - La fonction theme()
: Cette fonction vous permet de personnaliser les éléments de thème par défaut en utilisant des fonctions
d’élément spécifiques. Par exemple, theme([Link] = element_text(color = “red”)) change la couleur du
titre du graphique en rouge. - Thèmes complets : Ce sont des thèmes pré-définis comme theme_grey(),
theme_minimal(), etc., qui définissent tous les éléments du thème pour une apparence cohérente. Ces
thèmes offrent une solution rapide pour obtenir un aspect visuel uniforme pour tout le graphique.
11
library(patchwork)
plot_bw <- ggplot(mpg, aes(x = displ, y = hwy)) +
geom_point() + theme_bw() +labs(title = "Theme BW")
12
Theme BW Theme Minimal Theme Light
40 40 40
30 30 30
hwy
hwy
hwy
20 20 20
2 3 4 5 6 7 2 3 4 5 6 7 2 3 4 5 6 7
displ displ displ
40 40
30 30
hwy
hwy
20 20
2 3 4 5 6 7 2 3 4 5 6 7
displ displ
options description
Arrière-plan du Tracé Il définit l’arrière-plan du graphique en spécifiant la couleur de remplissage et
([Link]) éventuellement la couleur et l’épaisseur de la bordure.
Titre du Graphique Permet de personnaliser l’apparence du titre principal du graphique en ajustant
([Link]) la taille, la couleur, le style de police, etc.
Marges du Graphique Contrôle l’espace autour du graphique en spécifiant les marges supérieure,
([Link]) inférieure, gauche et droite.
options description
Texte de l’Axe Il permet de personnaliser l’apparence du texte des graduations le long des axes en
([Link]) ajustant la couleur, la taille, le style de police, etc.
13
options description
Texte de l’Axe Spécifie les caractéristiques des étiquettes de graduation sur l’axe horizontal (X), telles
X ([Link].x) que la rotation, l’alignement, etc.
Texte de l’Axe Contrôle les propriétés du texte des graduations sur l’axe vertical (Y), comme la
Y ([Link].y) rotation, l’alignement, etc.
Titre de l’Axe X Permet de définir les propriétés visuelles du titre de l’axe des abscisses (X), telles que la
([Link].x) taille, la couleur, le style de police, etc.
Titre de l’Axe Y Contrôle les caractéristiques du titre de l’axe des ordonnées (Y), comme la taille, la
([Link].y) couleur, le style de police, etc.
Lignes de Définit l’apparence des lignes de tiques le long des axes, notamment la couleur,
Tiques l’épaisseur, le style, etc.
([Link])
Lignes d’Axe Contrôle l’apparence de la ligne parallèle à l’axe, généralement cachée dans les thèmes
([Link]) par défaut. Vous pouvez personnaliser sa couleur, son épaisseur, son style, etc.
options_legend description_legend
Fond de la Légende Permet de définir l’apparence de l’arrière-plan de la légende, notamment la
([Link]) couleur de fond et les propriétés de la bordure.
Fond des Clés de Contrôle l’apparence du fond des clés de légende, qui sont les rectangles colorés
Légende ([Link]) représentant les catégories dans la légende.
Taille des Clés de Définit la taille des clés de légende, c’est-à-dire la taille des rectangles colorés ou
Légende des symboles utilisés pour représenter les catégories dans la légende.
([Link])
Hauteur des Clés de Spécifie la hauteur des clés de légende, utile pour ajuster la taille des symboles
Légende ou des rectangles dans la légende.
([Link])
Largeur des Clés de Détermine la largeur des clés de légende, permettant de contrôler la taille des
Légende symboles ou des rectangles dans la légende.
([Link])
Marge de la Légende Permet de définir la marge autour de la légende, ajustant l’espace entre la
([Link]) légende et les autres éléments du graphique.
Texte de la Légende Contrôle l’apparence du texte des étiquettes de légende, notamment la couleur,
([Link]) la taille, le style de police, etc.
Titre de la Légende Permet de spécifier les propriétés visuelles du titre de la légende, telles que la
([Link]) taille, la couleur, le style de police, etc.
Tous ces éléments de thème offrent une grande flexibilité pour personnaliser l’apparence de la légende dans
vos graphiques ggplot2 en fonction de vos besoins spécifiques.
• Les panneaux
• Panneau Arrière-plan ([Link]) : Définit l’arrière-plan du panneau, c’est-à-dire la zone située
sous les données tracées.
• Bordure du Panneau ([Link]) : Permet de spécifier la bordure du panneau, c’est-à-dire la ligne
qui entoure le panneau de traçage.
• Lignes de Quadrillage Majeures ([Link].x, [Link].y) : Contrôle l’apparence des
lignes de quadrillage majeures verticales et horizontales dans le panneau de traçage.
• Lignes de Quadrillage Mineures ([Link].x, [Link].y) : Définit l’apparence des lignes
de quadrillage mineures verticales et horizontales dans le panneau de traçage.
14
• Les facettes:
• Fond de Bande ([Link]) : Définit l’arrière-plan des bandes de facettes, c’est-à-dire la zone
située derrière le texte des facettes.
• Texte de Bande ([Link]) : Permet de spécifier les caractéristiques du texte affiché dans les bandes
de facettes.
• Texte de Bande X ([Link].x) : Contrôle les propriétés du texte affiché dans les bandes de facettes
horizontales (X).
• Texte de Bande Y ([Link].y) : Définit les caractéristiques du texte affiché dans les bandes de facettes
verticales (Y).
• Espacement entre les Facettes ([Link], [Link].x, [Link].y): Spécifie la marge entre
les facettes dans un graphique faceté. Cette marge contrôle l’espace entre les panneaux de traçage
adjacents.
15
Figure 2: tableau
16
labs(title="Titre en bleu et Axe des X en rouge et Gras
justifié à droite",x="axe des abcisses",y="axe des ordonnées")
17
Légende en Bas et Espacement de Panneau Réduit
5
axe des ordonnées
2
1.0 1.5 2.0 2.5 3.0
axe des abcisses
factor(x) 1 2 3
18
ggplot(data, aes(x, y, color = factor(x))) + geom_point() +
theme([Link] = element_text(face = "italic")) +
labs(title="Texte de Légende en Italic",x="axe des abcisses",
y="axe des ordonnées")
4
factor(x)
1
2
3
3
19
Arrière−plan de Tracé en Gris Clair
5
4
y
4
y
20
ggplot(data, aes(x, y)) + geom_point() +
theme([Link] = element_rect(fill = "lightblue")) +
ggtitle("panneau bleu")
panneau bleu
5
4
y
21
Lignes de grille seulement X
5
4
y
3) La composante geom
C’est elle qui précise le type de graphique à représenter. On appelle “geom”, un graphique réalisé à l’aide de
la commande geom_ de ggplot2(). Il en existe une multitude. Les geoms permettent de faire toutes sortes de
représentations, allant des points aux cartes, en passant par les histogrammes et les diagrammes circulaires.
Dans cette partie, quelques types de geoms seront présentés.
22
geom_bar() + # En fonction du milieu de résidence
labs(title = "Modes de remboursement de la
couverture maladie suivant le milieu de résidence")
Modes de remboursement de la
couverture maladie suivant le milieu de résidence
600
400
factor(s00q04)
count
1
2
200
Privé (individuel)
Etat/programme
Etat employeur EmployeurAutre (à préciser)
Etat et privé
Mode_remb
On voit ici que les différentes couches du mappage fill sont empilées. Cette disposition être modifiée
avec l’option “position”. Par défaut, on a “position=stack” (empilement). On peut avoir l’option “po-
sition=dodge” qui permet d’avoir les couches côte à côte. Attention ! Cette option se met hors de la
commande aes().
Base %>% filter(s03q32==1) %>%
ggplot()+
geom_bar(aes(x= Mode_remb ,fill=factor(s00q04)),
position="dodge" )+ # En fonction du milieu de résidence
labs(title = "Modes de remboursement de la
couverture maladie suivant le milieu de résidence")
23
Modes de remboursement de la
couverture maladie suivant le milieu de résidence
400
300
factor(s00q04)
count
1
200
2
100
Privé (individuel)
Etat/programme
Etat employeur EmployeurAutre (à préciser)
Etat et privé
Mode_remb
• geom_histogram()
ggplot(Base, aes(s03q24)) +
geom_histogram( binwith="39m", fill= "white", color= "blue")+
geom_freqpoly(color= "red")+
labs(title = "Montant des frais d'hospitalisation
au cours des 12 derniers mois")
24
Montant des frais d'hospitalisation
au cours des 12 derniers mois
1200
900
count
600
300
L’option “binwith” permet de modifier la largeur des classes. Il est aussi possible de définir le nombre
de classes en utilisant l’option “bins”. (Exemple: bins =5). En outre, sur le graphique précédent sont
représentées à la fois un histogramme de fréquences et un polygone des effectifs. Vous remarquerez aussi
que la commande aes() se trouve dans la commande ggplot(). Cet emplacement est dû au fait que nos
deux graphiques utilisent les mêmes données. C’est en fait comme cela que l’on fait pour superposer des
graphiques. On met en place les données communes et on ajoute les représentations graphiques avec le ‘+)’.
Prenons un autre exemple pour les polygones de fréquence. . .
Base$Reg_rec <- factor(Base$s00q01,
labels= names(attr(Base$s00q01, "labels")),
levels=unname(attr(Base$s00q01, "labels")))
Base %>%
filter(s03q01 == 1 & ) %>%
ggplot() +
geom_freqpoly(aes(x =s03q02 ,color=Reg_rec), alpha=0.2)
25
Reg_rec
DAKAR
ZIGUINCHOR
DIOURBEL
400 SAINT−LOUIS
TAMBACOUNDA
KAOLACK
count
THIES
LOUGA
200 FATICK
KOLDA
MATAM
KAFFRINE
KEDOUGOU
0
SEDHIOU
0 5 10 15
s03q02
• geom_density()
Un graphique de densité est une alternative à l’histogramme, utilisé pour visualiser la distribution d’une
variable continue. Il réunit les pics d’un histogramme.
#'Montant des frais d'hospitalisation
#'au cours des 12 derniers mois")
Base %>%
ggplot(aes(x =s03q24)) +
geom_density()
26
1.5e−05
density
1.0e−05
5.0e−06
0.0e+00
• geom-boxplot()
Base %>%
ggplot() +
geom_boxplot(aes(x =s03q24, y=Reg_rec))+
coord_flip()
# Toujours ces montants...
27
3e+06
2e+06
s03q24
1e+06
0e+00
DAKAR
ZIGUINCHOR
DIOURBEL
SAINT−LOUIS
TAMBACOUNDA
KAOLACK
THIESLOUGAFATICKKOLDAMATAM
KAFFRINE
KEDOUGOU
SEDHIOU
Reg_rec
Vous noterez ici l’usage de la commande coord_filp(). Elle permet d’inverser les x et les y. Ainsi, des
boxplots verticaux et non horizontaux. Cette commande s’utiliser aussi avec les autres types de geoms.
• geom_text() et geom_label()
C’est pour mettre du texte, étiqueter. . . Etant donné des coordonnées x et y, il est possible de placer un
point, n’est-ce pas ? Eh bien, avec geom-text() et geom_label(), on ne place pas un point, mais on met un
caractère (ou une chaîne de caractères). Il suffit juste passer dans la commande geom (dans la commande
aes() plus précisément) une variable de types string (ou de type factor). En réalités,ces geoms viennent se
“superposer” à d’autres. Aussi les données x et y seront-elles spécifiées dans la commande aes().
#s03q09 # Niveau de satisfaction de consultation
Base$satif_cons <- factor(Base$s03q09,
labels= names(attr(Base$s03q09, "labels")), levels=unname(attr(B
t <- [Link](t)
28
Modes de remboursement de la
couverture maladie suivant le milieu de résidence
75%
60
perc
40
20
10% 12%
2%
0
“vjust” est là pour l’ajustement verticale du texte. Ici, on s’arrange à placer ce dernier un peu plus haut que
la position suggérée par les “coordonnées” afin de l’avoir au-dessue des barres du diagramme.
• Tamsir: Hold on a sec girl. . . You did not telle us how you make a pie chart?
• KC and SD : Well, take a chill pill bro. You’ll find out right on the spot!
• M. Hady : So show us guys.
ggplot(Base)+
geom_bar(aes(y=Reg_rec, x="", fill=Reg_rec),
stat="identity", width = 1)+
theme_void()+
coord_polar("y", start=0)
# Question :
# What could get you shook about this pie ?
# (as a statistician)
29
Reg_rec
DAKAR
ZIGUINCHOR
DIOURBEL
SAINT−LOUIS
TAMBACOUNDA
KAOLACK
THIES
LOUGA
FATICK
KOLDA
MATAM
KAFFRINE
KEDOUGOU
SEDHIOU
4) La composante facet
facet_wrap est une fonction de ggplot2 qui permet de diviser un graphique en plusieurs panneaux en fonction
des niveaux d’une ou plusieurs variables. Cette fonction crée une disposition de panneaux en “enroulement”
(wrap), où chaque niveau de la variable spécifiée crée un panneau distinct.
[Link](123) # Pour la reproductibilité des résultats
entreprises <- [Link]( taille_entreprise = rep(c("Petite",
"Moyenne", "Grande"), each = 50),
secteur_activite = rep(c("Technologie", "Finance", "Santé"),
times = 50),
nbre_salaries = rpois(150, lambda = 50),
chiffre_affaires = rnorm(150, mean = 500000, sd = 100000))
ggplot(entreprises, aes(x = nbre_salaries, y = chiffre_affaires)) +
geom_point() + facet_wrap(~ taille_entreprise) +
labs(x = "Nombre de salariés", y = "Chiffre d'affaires",
title = "Relation entre le nombre de salariés et
le chiffre d'affaires")
30
Relation entre le nombre de salariés et
le chiffre d'affaires
Grande Moyenne Petite
7e+05
6e+05
Chiffre d'affaires
5e+05
4e+05
3e+05
40 50 60 70 40 50 60 70 40 50 60 70
Nombre de salariés
Dans le graphe avant, facet_wrap(~ taille_entreprise) crée des panneaux enroulés en fonction de la variable
taille_entreprise. Cela signifie que chaque niveau de la variable taille_entreprise aura son propre panneau
dans le graphique. Ainsi pour chaque modalité de taille_entreprise, nous avons le chiffre d’affaires en fonction
du nombre de salariés. Lorsqu’on veut diviser notre graphique en plusieurs panneaux en fonction des niveaux
de deux variables catégorielles, nous pouvons utiliser facet_grid.
ggplot(entreprises, aes(x = nbre_salaries,
y = chiffre_affaires)) +
geom_point() +
facet_grid(taille_entreprise~secteur_activite) +
labs(x = "Nombre de salariés", y = "Chiffre d'affaires",
title = "Relation entre le nombre de salariés et
le chiffre d'affaires")
31
Relation entre le nombre de salariés et
le chiffre d'affaires
Finance Santé Technologie
7e+05
Grande
6e+05
5e+05
4e+05
3e+05
Chiffre d'affaires
7e+05
Moyenne
6e+05
5e+05
4e+05
3e+05
7e+05
6e+05
Petite
5e+05
4e+05
3e+05
40 50 60 70 40 50 60 70 40 50 60 70
Nombre de salariés
facet_grid() permet de connaitre dans ce cas, le chiffre d’affaires en fonction du nombre de salariés dans le
secteur Finance des Moyennes entreprises.
5) La composante scale
La fonction scale est utilisée pour modifier les échelles des esthétiques visuelles dans un graphique ggplot.
A la composante scale, on peut associer les attributs scale_color, scale_size, scale_x, scale_y, scale_area,
scale_shape, chacun permettant de modifier les échelles de l’esthétique correspondante. Prenons comme
exemple scale_color. Les échelles de couleur (scale_color): Ces échelles attribuent des couleurs à des valeurs
spécifiques de la variable. Dans scale_color, nous avons scale_color_radient, scale_color_manual ou en-
core. . .
• scale_color_gradient : Cette fonction crée une échelle de couleur continue en gradient entre deux
couleurs spécifiées.
Base %>% filter(s03q12==1 & s03q13 >0 & s03q18 >0) %>%
ggplot()+
geom_point(aes(x= s03q13, y=s03q18,color = s03q13))+
scale_color_gradient(low = "blue", high = "red")
32
3e+05
s03q13
75000
s03q18
2e+05
50000
25000
1e+05
0e+00
NB: on remarque que R a défini par défaut le regroupement des valeurs. Nous pouvons définir cela manuelle-
ment avec l’instruction breaks.
Base %>%
filter(s03q12 == 1 & s03q13 > 0 & s03q18 > 0) %>%
ggplot() +
geom_point(aes(x = s03q13, y = s03q18, color = s03q13)) +
scale_color_gradient(
low = "blue",
high = "red",
breaks = c(20000, 40000, 60000, 80000 ))+
labs(
x = "Montant des frais de consultation",
y = "Montant des frais de médicaments",
color = "Montant des frais de consultation" )
33
Montant des frais de médicaments
3e+05
80000
2e+05 60000
40000
20000
1e+05
0e+00
• scale_color_manual() est une fonction de ggplot2 utilisée pour définir manuellement l’échelle des
couleurs d’une esthétique de couleur dans un graphique.
Base$Mode_remb_n <- factor(Base$Mode_remb,
levels = c("1" = "Privé (individuel)", "2" = "Et
"3" = "Etat employeur",
"4" = "Employeur",
"5" = "Autre (à préciser)",
"6" = "Etat et privé"))
Base %>%
filter(s03q32 == 1) %>%
ggplot(aes(x = Mode_remb, fill = Mode_remb)) +
geom_bar(color = "black") +
scale_color_manual(values = couleurs) +
labs(x = "Mode de remboursement")
34
600
Mode_remb
400 Privé (individuel)
Etat/programme
count
Etat employeur
Employeur
Privé (individuel)
Etat/programme
Etat employeurEmployeur
Autre (à préciser)
Etat et privé
Mode de remboursement
Trêve de théories. Il est temps de mettre la main à la patte : passons aux applications. . .
III-Applications
1) Little warm up with code chunks. . .
Observe the following code chunks.
1. Try to guess their outputs, not looking at the images (7)
2. Match each code chunk with its image. How many of them did you get right ?
Code chunk N1
#'Avez-vous rencontré un problème de santé
#'durant les 12 derniers mois qui a entrainé une hospitalisation ?
ggplot(Base)+
geom_bar(aes(x=s03q19, fill=s03q19_rec))+
theme_void()+
labs(title = "Problème de santé durant
les 12 derniers mois qui a entrainé
une hospitalisation ?",
x="Réponse donnée")
Code chunk N2
35
#'Bénéficiez-vous d'une couverture maladie ?
ggplot(Base)+
geom_bar(aes(x=mil_resid,
fill=s03q32_rec), position="dodge" )+
coord_flip()
Code chunk N3
#'Bénéficiez-vous d'une couverture maladie ?
ggplot(Base)+
geom_bar(aes(x=mil_resid, fill=s03q32_rec),
position="fill" )+
coord_flip()
Code chunk N4
#'Avez-vous rencontré un problème de santé
#'durant les 12 derniers mois qui a entrainé une hospitalisation ?
ggplot(Base)+
geom_bar(aes(x=s03q19,y="",
fill=s03q19_rec), stat="identity", width = 1)+
theme_void()+
coord_polar("x", start=0)
Code chunk N5
#'Milieu de résidence
ggplot(Base)+
36
geom_bar(aes(x=mil_resid,y="",
fill=mil_resid), width=1, stat="identity")+
theme_void()+
coord_polar("x", start=0)
Code chunk N6
#'s03q40: Moyens de prévention du
#'paludisme autres que moutiquaire,
#'suivant la tendance à utiliser
#'une moustiquaire.
Code chunk N7
#'s03q40: Moyens de prévention
#'du paludisme autres que moutiquaire,
#'suivant la tendance à
#'utiliser une moustiquaire.
37
Here are the ouputs:
## [1] 66120 66
La base possède 66120 observations et pour 62 variables.
38
Figure 5: And another
39
Figure 8: And another
40
#'Voyons alors les types et labels des variables
type <- c()
noms <- c()
Variables <- [Link](Base)
for(i in colnames(Base)){
noms <- c(noms, attr(Base[[i]],"label"))
type <- c(type, typeof(Base[[i]]))
}
41
s03q11 double 3.11 Distance entre le domicile et le lieu de la premiere consultation?
s03q12 double 3.12 A consulté un service de santé ou un guérisseur au cours des 3 drnrs mois?
s03q13 double 3.13 Mtant des frais consultation d’un médecin généraliste des 3 derniers mois?
s03q14 double 3.14 Mtant frais de consultation d’un médecin spécialiste des 3 derniers mois?
s03q15 double 3.15 Montant des frais de consultation pour un dentiste des 3 derniers mois?
s03q16 double s03q16. Mnt. dé frais d consultation d’1 guérisseur traditio dé 3 derniers mois
s03q17 double 3.17 Montant des frais des examens médicaux et de soins des 3 derniers mois?
s03q18 double 3.18 Montant des frais de médicaments des 3 derniers mois?
s03q19 double 3.19. [NOM] pb d santé durant les 12 drnrs mois qui a entrainé 1e hospita.?
s03q20 double 3.20. Combien de fois [NOM] été hospitalisé au cours dé 12 derniers mois
s03q21 double 3.21 .Dernier problème d santé pour lequel [NOM] a été hospitalisé
s03q22 double [Link] ce dern. pb d santé nécéssité hospit. Nbr. jrs [NOM] resté à hôpital ?
s03q23 double 3.23 .Où [NOM] a-t-il été hospitalisé pour ce dernier problème de santé ?
s03q24 double 3.24 Montant des frais d’hospitalisation au cours des 12 derniers mois?
s03q25 double 3.25. [NOM] supprté frais appareils mdicaux thérapeut. durant les 12 drnrs mois
s03q26 double 3.26. Mntant des frais pour verres correcteurs, etc. durant lé 12 derniers mois
s03q27 double 3.27. Montant dépensé durant les 12 derniers mois pour des béquilles, etc.
s03q28 double 3.28. [NOM] supporté dé frais d vaccination, etc. pdt lé 12 derniers mois?
s03q29 double 3.29. Quel est le montant des dépenses de vaccination?
s03q30 double 3.30. Quel est le montant des dépenses de circoncision?
s03q31 double 3.31. Quel est le montant des dépenses de bilan de santé (check up)?
s03q32 double 3.32. [NOM] est-il couvert par une assurance maladie?
s03q33 double 3.33. Quel est le taux de remboursement (couverture)?
s03q34 double 3.34. Qui parraine/finance l’assurance maladie de [NOM]?
s03q35 double 3.35. Quel est le mode de remboursement?
s03q36 double 3.36. [NOM] bénéficie d’1e prise charge particulière (Mutuelle, consul. gén.)?
s03q37 double 3.37 De quelle prise en charge s’agit-il?
s03q38 double 3.38.[NOM] dort-il habituellement sous une moustiquaire?
s03q39 double 3.39. [NOM] a-t-il dormi sous 1 moustiqu. imprégnée/simple la nuit dernière ?
s03q40 double 3.40 En dehors moustiqua., moyen princip que [NOM] utilise pr protec moustiqu.?
s03q41 double 3.41 Est-ce que [NOM] a des difficultés pour voir, même avec des lunettes ?
s03q42 double 3.42. Est-ce que [NOM] a difficultés pour entendre même avec 1 aide auditive
s03q43 double 3.43. Est-ce que [NOM] a des difficultés pour marcher ou monter les escaliers ?
s03q44 double 3.44. Est-ce que [NOM] a des difficultés pour se rappeler ou se concentrer ?
s03q45 double 3.45. Est-ce que [NOM] a difficultés pr accomplir dé tâches com. s laver, etc
s03q46 double 3.46. [NOM] difficultés pour communiquer, etc. dans sa langue usuelle?
Mode_remb integer Vague
Reg_rec integer grappe
satif_cons integer Identifiant du ménage
Mode_remb_n integer 01.00a. CODE ID du répondant
ggplot(Base) +
42
geom_bar(aes(y=Reg_rec,
x=after_stat(count*100/sum(count))),
color="white",
fill="royalblue")+
theme_minimal()+
labs(title = "Répartition de l'échantillon
suivant les différentes régions",
y="Régions",
x="Part dans l'échantillon",
caption="Source : ANSD, EHCVM 2018/2019,
calculs propres ")
Répartition de l'échantillon
suivant les différentes régions
SEDHIOU
KEDOUGOU
KAFFRINE
MATAM
KOLDA
FATICK
Régions
LOUGA
THIES
KAOLACK
TAMBACOUNDA
SAINT−LOUIS
DIOURBEL
ZIGUINCHOR
DAKAR
0 3 6 9
Part dans l'échantillon
Source : ANSD, EHCVM 2018/2019,
calculs propres
ggplot(Base) +
geom_bar(aes(x = "",
y = s03q01,
fill = s03q01_rec),
width = 1,
43
stat = "identity") +
coord_polar("y", start = 0) +
theme_void()+
labs(title = "Répartition des individus
suivant la rencontre ou non d’un problème
de santé pendant les trente (30)
derniers jours",
caption="Source : ANSD, EHCVM 2018/2019,
calculs propres ")
Répartition des individus suivant la rencontre ou non d’un problème de santé pendant les
trente (30) derniers jours.
s03q01_rec
Oui
Non
NA
####Répartition des principaux problèmes de santé rencontrés pendant les trente (30) derniers jours
suivant le milieu de résidence.
Base$mil_resid <- factor(Base$s00q04,
labels= names(attr(Base$s00q04, "labels")),
levels=unname(attr(Base$s00q04, "labels")))
44
color="white")+
theme_minimal()+
labs(title = "Problèmes de santé
rencontrés suivant le milieu de résidence",
y="Part dans l'échantillon",
x="Problèmes",
caption="Source : ANSD, EHCVM 2018/2019,
calculs propres ")
Problèmes de santé
rencontrés suivant le milieu de résidence
Règles douloureuses
Hémorroïde
Maux de tête
Maux de ventre
Part dans l'échantillon
Autre
Meningite
Diabète
Toux, rhume mil_resid
Mal de gorge
Urbain
Problème d'estomac
Fièvre typhoïde Rural
Problème de tension
Maladie des yeux
Problème de peau
Problème dentaire
Accident/Blessure
Diarrhée
Fièvre/Paludisme
0 5 10 15
Problèmes
Source : ANSD, EHCVM 2018/2019,
calculs propres
####Répartition des principaux problèmes de santé des trente (30) derniers jours par région
# On représente pour les différentes régions les différents cas de maladies.
Base %>%
filter(s03q01 == 1 & ) %>%
ggplot() +
geom_density(aes(y =pblems,
fill = Reg_rec),
position = "dodge") +
theme_minimal() +
labs(title = "Principaux problèmes de
santé rencontrés par région",
y = "Part dans l'échantillon",
x = "Problèmes",
caption = "Source : ANSD, EHCVM 2018/2019,
calculs propres ")+
coord_flip()
Base %>%
45
filter(s03q01 == 1 & ) %>%
ggplot() +
geom_density(aes(x =s03q02 ,
fill = Reg_rec), alpha=0.2) +
theme([Link]="top")+
labs(title = "Principaux problèmes de
santé rencontrés par région",
y = "Part dans l'échantillon",
x = "Problèmes",
caption = "Source : ANSD, EHCVM 2018/2019,
calculs propres ")
KAOLACK
THIES
LOUGA
0.5 FATICK
KOLDA
MATAM
0.0 KAFFRINE
Fièvre/Paludisme
Accident/Blessure
Diarrhée
Problème
Problème
Maladie
dentaire
Problème
de des
peau
Fièvre
Problème
yeux
de tension
typhoïde
Mal
d'estomac
de
Toux,
gorge
rhume
Diabète
Meningite
Maux
AutreMaux de têtedouloureuses KEDOUGOU
de ventre
Règles
Hémorroïde
Part dans l'échantillon SEDHIOU
Source : ANSD, EHCVM 2018/2019,
calculs propres
46
Principaux problèmes de
santé rencontrés par région
DAKAR SAINT−LOUIS THIES KOLDA KEDOUGOU
0.15
0.10
0.05
0.00
5 10 15
Problèmes
Source : ANSD, EHCVM 2018/2019,
calculs propres
Ce graphique n’est pas trop lisible. . . et en réalité, statistiquement parlant, il ne représente rien au fonds. . .
Et si l’on prenait un autre angle de vue. Pour chaque région, représentons les différents cas de maladies ?
# On représente pour les différentes régions les différents cas de maladies.
Base %>%
filter(s03q01 == 1 & ) %>%
ggplot() +
geom_bar(aes(x =pblems, fill=pblems),
position = "dodge") +
theme([Link] = "top") +
facet_wrap(vars(Reg_rec)) +
labs(title = "Principaux problèmes de
santé rencontrés par région",
caption = "Source : ANSD, EHCVM 2018/2019,
calculs propres ")
47
Principaux problèmes de
santé rencontrés par région
Fièvre/Paludisme Problème de peau Problème d'estomac Meningite Hémorroïde
400
200
0
TAMBACOUNDA KAOLACK THIES LOUGA
400
200
0
count
400
200
0
Fièvre/Paludisme
Accident/Blessure
Problème
Problème
Diarrhée
Problème
Maladie
Problème
Fièvre
dentaire
Mal
de
des
Toux,
de
typhoïde
peau
de
yeux
d'estomac
tension
Diabète
Maux
Meningite
Règles
gorge
rhume
Maux
Autre
Hémorroïde
de
Fièvre/Paludisme
de
Accident/Blessure
douloureuses
ventre
Problème
Problème
tête
Diarrhée
Problème
Maladie
Problème
Fièvre
dentaire
Mal
de
des
Toux,
de
typhoïde
peau
de
yeux
d'estomac
tension
Diabète
Maux
Meningite
Règles
gorge
rhume
Maux
Autre
Hémorroïde
de de
douloureuses
ventre
tête
KEDOUGOU SEDHIOU
400
200
0
Fièvre/Paludisme
Accident/Blessure
Problème
Problème
Diarrhée
Problème
Maladie
Problème
Fièvre
dentaire
Mal
de
des
Toux,
de
typhoïde
peau
de
yeux
d'estomac
tension
Diabète
Maux
Meningite
Règles
gorge
rhume
Maux
Autre
Hémorroïde
de
Fièvre/Paludisme
de
Accident/Blessure
douloureuses
ventre
Problème
Problème
tête
Diarrhée
Problème
Maladie
Problème
Fièvre
dentaire
Mal
de
des
Toux,
de
typhoïde
peau
de
yeux
d'estomac
tension
Diabète
Maux
Meningite
Règles
gorge
rhume
Maux
Autre
Hémorroïde
de de
douloureuses
ventre
tête
pblems
Source : ANSD, EHCVM 2018/2019,
calculs propres
#'Si la personne a rencontré un problème de santé mais ne s'est pas fait consulter...filtrer
#'
Base %>% filter(s03q01==1 & s03q05==2) %>%
ggplot() +
geom_bar(aes(y=raisons,
48
x=after_stat(count*100/sum(count)),
fill=mil_resid),
position="fill",
color="white")+
theme_minimal()+
labs(title = "Raisons de non consultation
suivant le milieu de résidence",
x="Raisons",
caption="Source : ANSD,
EHCVM 2018/2019, calculs propres ")
Répartition des différentes raisons de non consultation suite à un problème de santé rencontré
dans les (30) dernies jours en fonction du milieu de résidence.
Manque d'argent
Refus
Trop éloigné
Trop cher
Pas nécessaire
49
EHCVM 2018/2019, calculs propres ")
Pas nécessaire
suivant le milieu de résidence
Rural
Urbain
TropTrop
raisons
Rural
Urbain
cher
Pas nécessaire
Automédication
Rural
éloigné
Urbain Trop cher
Pas dePeur
Rural Trop éloigné
mil_resid
Urbain
Automédication
Rural
confiance
Urbain Pas de confiance
du résultat
Rural
Urbain Peur du résultat
Refus
Manque
Rural Refus
Urbain
Autre
Rural Manque d'argent
Urbain
d'argent
Autre (à préciser)
(à préciser)
Rural
Urbain
0 5 10 15 20
Raisons
Source : ANSD,
EHCVM 2018/2019, calculs propres
Voyons les choses sous un autre angle. Pour chaque milieu de résidence, voyons la part de chaqu raison
évoquée.
#'On oubliera pas de filter pour avoir les individus qui
#'ont rencontré un problème de santé
#'mais ne se sont pas fait consulter.
50
Raisons de non consultation
par milieu de résidence
raisons
Pas nécessaire
Part dans l'échantillon
Urbain Refus
Manque d'argent
Autre (à préciser)
51
Part des raisons de non
consultation par milieu de résidence
20
raisons
Pas nécessaire
15 Trop cher
Trop éloigné
Raisons
Automédication
10
Pas de confiance
Peur du résultat
5 Refus
Manque d'argent
Autre (à préciser)
0
Urbain Rural
Milieu de résidence
Source : ANSD, EHCVM 2018/2019,
calculs propres
52
Lieux de consultation
suivant le milieu de résidence.
Guérisseur/ Tradipraticien/ Marabout
Autre personnel de santé
Agent technique de Santé
Lieux de consultation
Matrone
Pharmacien mil_resid
Aide−soignant Urbain
Sage−femme Rural
Infirmier(ère)
Dentiste
Médecin Généraliste
Médecin Spécialiste
0 10 20 30 40
count * 100/sum(count)
Source : ANSD, EHCVM 2018/2019,
calculs propres
53
16
15
lat
14
13
#[Link]("maps")
54
10
lat
10 12 14 16
long
#[Link]("maps")
55
−15
lat
−20
−25
43 45 47 49
long
56
name
Algeria eSwatini Niger
Angola Ethiopia Nigeria
Benin Gabon Rwanda
Botswana Gambia S. Sudan
Carte de l'Afrique
Burkina Faso Ghana São Tomé and Principe
avec une couleur pour chaque pays
40°N Burundi Guinea Senegal
Cabo Verde Guinea−Bissau Sierra Leone
20°N
Cameroon Kenya Somalia
0°
Central African Rep. Lesotho Somaliland
57