0% ont trouvé ce document utile (0 vote)
4 vues57 pages

Visualisation des données avec ggplot2

Ce document traite des statistiques descriptives et de la visualisation des variables catégorielles en utilisant le package ggplot2 dans R. Il explique les types de variables, les concepts de base de la visualisation des données, et détaille les différentes esthétiques disponibles dans ggplot2 pour personnaliser les graphiques. Enfin, il aborde les thèmes complets qui permettent de modifier l'apparence visuelle des graphiques.

Transféré par

Samba Dieng
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues57 pages

Visualisation des données avec ggplot2

Ce document traite des statistiques descriptives et de la visualisation des variables catégorielles en utilisant le package ggplot2 dans R. Il explique les types de variables, les concepts de base de la visualisation des données, et détaille les différentes esthétiques disponibles dans ggplot2 pour personnaliser les graphiques. Enfin, il aborde les thèmes complets qui permettent de modifier l'apparence visuelle des graphiques.

Transféré par

Samba Dieng
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Statistiques descriptives et visualisation des variables catégorielles

avec ggplot2()

Coulibaly_Khadidiatou & Dieng_Samba

2024-04-03

I-Les variables dans R


Les variables en général. . .
• Quantitatives: discrètes et continues
• Qualitatives: nominales et ordinales
Les variables sur R. . .
• Sous forme de vecteurs
• double, float, character
• Les factors: En R, un facteur (ou factor en anglais) est un vecteur contenant uniquement certaines
valeurs prédéfinies. Les valeurs pré-définies sont appelées des niveaux.
# labels, levels...
cereales$A <- factor(cereales$B,
labels= names(attr(cereales$B, x = "labels")),
levels=unname(attr(cereales$B, "labels")))

II-Data Visualisation avec ggplot2: la grammaire graphique


La visualisation des données est une étape cruciale dans le processus d’analyse, car elle permet de transformer
des données brutes en informations exploitables et compréhensibles. Elle offre un moyen visuel simple pour
communiquer des idées complexes de manière visuelle et intuitive. Au sein de cet univers de la visualisation
des données, il existe une multitude d’outils et de techniques. L’un des outils les plus populaires et les
plus puissants dans le monde de R est ggplot2, qui fait partie intégrante de la suite tidyverse. Toutefois,
avant de plonger dans les détails de ggplot2, il est essentiel de comprendre les concepts fondamentaux de la
visualisation des données. Cela inclut la compréhension des types de graphiques disponibles, des meilleures
pratiques de conception et de la manière de choisir le bon graphique pour représenter les données de manière
efficace. Une fois que nous aurons une vision générale de la visualisation des données, nous pourrons alors
explorer ggplot2 plus en détail. ggplot2 est une bibliothèque de visualisation de données qui repose sur le
concept de grammaire graphique. Cette approche structurée nous permet de créer une grande variété de
graphiques en combinant des composants de manière cohérente et intuitive. Le package ggplot2 a été publié
pour la première fois en 2006 sous le nom de ggplot. Il fut amélioré de façon importante et renommé ggplot2
en 2007. Son créateur est Hadley Wickham, qui est aussi derrière plusieurs des packages du tidyverse, duquel
ggplot2 fait partie.

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

0 25000 50000 75000


s03q13

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

0 25000 50000 75000


frais_consultation

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

200 Autre (à préciser)


Etat et privé

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?

#'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 %>% 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

200 Autre (à préciser)


Etat et privé

Privé (individuel)
Etat/programme
Etat employeurEmployeur
Autre (à préciser)
Etat et privé
Mode_remb

Lorsque la variable d’esthétique de remplissage est différente de la variable représentée, on obtient un


graphique en barres empilées ou chaque empilement correpond à une combinaison de nos deux variables.
Par exemple,
Base %>% filter(s03q32==1) %>%
ggplot(aes(x= Mode_remb ,fill=factor(s00q01)))+geom_bar()

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.

a) les thèmes complets


Les thèmes complets dans ggplot2 offrent une variété d’options prédéfinies pour personnaliser l’apparence
visuelle de vos graphiques. Chaque thème a ses propres caractéristiques distinctes en termes de fond, de
couleur des axes et de lignes de grille, ce qui vous permet de choisir celui qui convient le mieux à votre
présentation esthétique ou à vos besoins analytiques. Le tableau suivant présente quelques thèmes prédéfinis
dans ggplot2.
Ce code permet de visualiser les différents thèmes qui sont combinés sur le même graphique.

11
library(patchwork)
plot_bw <- ggplot(mpg, aes(x = displ, y = hwy)) +
geom_point() + theme_bw() +labs(title = "Theme BW")

plot_minimal <- ggplot(mpg, aes(x = displ, y = hwy)) +


geom_point() + theme_minimal() + labs(title = "Theme Minimal")

plot_light <- ggplot(mpg, aes(x = displ, y = hwy)) +


geom_point() + theme_light() + labs(title = "Theme Light")

plot_dark <- ggplot(mpg, aes(x = displ, y = hwy)) +


geom_point() +theme_dark() + labs(title = "Theme Dark")

plot_classic <- ggplot(mpg, aes(x = displ, y = hwy)) +


geom_point() + theme_classic() + labs(title = "Theme Classic")

combined_plot <- plot_bw + plot_minimal + plot_light +


plot_dark + plot_classic
combined_plot

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

Theme Dark Theme Classic

40 40

30 30
hwy

hwy

20 20

2 3 4 5 6 7 2 3 4 5 6 7
displ displ

b) Les élèments de thème


Les éléments de thème permettent de contrôler les différents composants visuels d’un graphique, tels que les
titres, les axes, les légendes, les graduations, etc. Ils sont regroupés en plusieurs groupes.
• Les thèmes de tracé :
• Les thèmes de tracé :

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.

On a aussi. . . • Les thèmes d’axe :

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.

Et aussi. . . • Les thèmes de légende :

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.

c) Les fonctions d’élèment


Les fonctions d’élément sont utilisées pour définir les propriétés visuelles des éléments individuels d’un
graphique dans ggplot2. Chaque élément (titre, axes, légendes, etc.) est associé à une fonction d’élément
spécifique qui permet de définir ses caractéristiques telles que la couleur, la taille, la police, etc. Il existe
quatre types de fonctions d’élément intégrées : texte, lignes, rectangles et espaces, chaque fonction d’élément
ayant un ensemble de paramètres pour contrôler l’apparence. Ces quatre fonctions sont element_text(),
element_line(),element_rect(),element_blank().
• element_text() : Cette fonction est utilisée pour définir les propriétés visuelles du texte dans un graphique.
Les sous-fonctions de element_text() permettent de contrôler des aspects sur la police tels que la taille, la
couleur, la famille de police, le style, l’alignement, etc.
• element_line() : Cette fonction est utilisée pour définir les propriétés visuelles des lignes dans un graphique.
Les sous-fonctions permettent de contrôler des aspects tels que la couleur, l’épaisseur, le type de ligne, etc.
• element_rect() : Cette fonction est utilisée pour définir les propriétés visuelles des rectangles dans le
graphique, tels que la couleur de remplissage, la couleur du contour, etc.
• element_blank() : Cette fonction est utilisée pour supprimer complètement un élément visuel du
graphique..
NB: hjust et vjust peuvent prendre les valeurs 0, 0.5 et 1. S’ils prenne 0, cela correspond à un alignement à
gauche, 0.5 pour centrer les titres et 1 pour aligner à droite.

d) Quelques exemples pour bien comprendre les thèmes


Il est nécessaire de connaitre les élèments de thème et les fonction d’élèments avant de se lancer dans les
représentations graphiques étant donné que les deux vont de pair. Ainsi, nous pouvons montrer quelques
exemples pratiques de l’utilisation simultanée des élèments de thème et fonctions d’élèment.
data <- [Link]( x = c(1, 2, 3), y = c(2, 3, 5))
t10 <-ggplot(data, aes(x = x, y = y)) + geom_point() +
labs(x = "X", y = "Y") + ggtitle("element_text") +
theme( [Link] = element_text(
size = 16, color = "red",
face = "bold", hjust=0.5) )

ggplot(data, aes(x, y)) + geom_point() +


theme([Link] = element_text(color = "blue"),
[Link].x = element_text(color="red",
face = "bold",hjust=1)) +

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")

Titre en bleu et Axe des X en rouge et Gras


justifié à droite
5
axe des ordonnées

1.0 1.5 2.0 2.5 3.0


axe des abcisses

ggplot(data, aes(x, y, color = factor(x))) + geom_point() +


theme([Link] = "bottom", [Link] = unit(0.5, "lines")) +
labs(title="Légende en Bas et Espacement de Panneau Réduit",
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

ggplot(data, aes(x, y)) + geom_point() +


theme([Link] =element_line(color = "red")) +
labs(title="Lignes de Tiques Rouges",x="axe des abcisses",
y="axe des ordonnées")

Lignes de Tiques Rouges


5
axe des ordonnées

1.0 1.5 2.0 2.5 3.0


axe des abcisses

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")

Texte de Légende en Italic


5
axe des ordonnées

4
factor(x)
1
2
3
3

1.0 1.5 2.0 2.5 3.0


axe des abcisses

ggplot(data, aes(x, y)) + geom_point() +


theme([Link] = element_rect(fill = "lightgrey")) +
ggtitle("Arrière-plan de Tracé en Gris Clair")

19
Arrière−plan de Tracé en Gris Clair
5

4
y

1.0 1.5 2.0 2.5 3.0


x

ggplot(data, aes(x, y)) + geom_point() +


theme([Link] = element_line(linewidth = 1.5)) +
ggtitle("Lignes de Grille Principales en Gras")

Lignes de Grille Principales en Gras


5

4
y

1.0 1.5 2.0 2.5 3.0


x

20
ggplot(data, aes(x, y)) + geom_point() +
theme([Link] = element_rect(fill = "lightblue")) +
ggtitle("panneau bleu")

panneau bleu
5

4
y

1.0 1.5 2.0 2.5 3.0


x

ggplot(data, aes(x, y)) + geom_point() +


theme([Link].x =
element_line(color = "gray60", linewidth = 0.8)) +
ggtitle("Lignes de grille seulement X")

21
Lignes de grille seulement X
5

4
y

1.0 1.5 2.0 2.5 3.0


x

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.

a) Les types de geoms


• geom_histogram() et geom_freqpoly() : histogramme, polygone de fréquences;
• geom_bar() et geom_col() : diagrammes à barres;
• geom_point(): pour les nuages de points;
• geom_dotplot(): graphique fait de points;
• geom_path() et geom_line(): tracé de lignes, séries temporelles. . . ;
• geom_smooth(): pour faire de la régression;
• geom_density()
• geom_area(): graphique à aire;
• geom_boxplot();
• geom_text() et geom_label(): souvent utilisés pour mettre du texte sur un graphique;
• geom_sf(): pour représenter des polygones sur des cartes;
La liste ci-dessus n’est pas exhaustive, loin de là. Vous pourrez trouver des informations sur les différents
geoms sur la fiche suivante: [Link]

b) Quelques exemples de geoms


• geom_bar()
Base %>% filter(s03q32==1) %>%
ggplot(aes(x= Mode_remb ,fill=factor(s00q04) ))+

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

0e+00 1e+06 2e+06 3e+06


s03q24

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 & ![Link](s03q02)) %>%
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

0e+00 1e+06 2e+06 3e+06


s03q24

• 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 <- table(Base$satif_cons) #tri à plat

t <- [Link](t)

t["perc"]= floor(t[,2]*100/sum(t[,2])) # poursentages


ggplot(t, aes(x = Var1, y = perc)) +
geom_bar(stat = "identity") + # La valeur elle-même
geom_text(aes(label = paste0(perc,"%")), vjust = -0.5)+
labs(title = "Modes de remboursement de la
couverture maladie suivant le milieu de résidence")

28
Modes de remboursement de la
couverture maladie suivant le milieu de résidence
75%

60
perc

40

20

10% 12%

2%
0

Très satisfait Satisfait Peu satisfait Pas du tout satisfait


Var1

“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

Le cas du pie chart. . .


Notre cher ami Tamsir a bien raison de poser la question : comment faire un diagramme circulaire ?(Il
a également raison de nous rappeler qu’il est préférable d’éviter d’utilier ce typde de diagramme pour des
variables à plus de 5 modalités, soit dit en passant; “merci Inspecteur Tamsir”) En effet, il n’existe pas
(à ce que l’on sait. . . ) de geom_pie(). Pour faire un diagramme circulaire, on commence d’abord par un
diagramme en barre qui s’accompagne :
• d’un mappage suivant la même vaiable que celles représentée
• des options position=“fill”, stat=“identity” et widht=1
• de la commande coor_polar() qui assure l’aspect arqué de chaque secteur
• de l’option start qui définit l’angle de départ

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

0 25000 50000 75000


s03q13

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

Montant des frais de consultation

80000
2e+05 60000

40000

20000

1e+05

0e+00

0 25000 50000 75000


Montant des frais de consultation

• 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é"))

couleurs <- c("blue", "green", "red",


"purple", "orange", "yellow")

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

200 Autre (à préciser)


Etat et privé

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 ?

Base$s03q19_rec <- factor(Base$s03q19,


labels= names(attr(Base$s03q19, "labels")),
levels=unname(attr(Base$s03q19, "labels")))

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 ?

Base$s03q32_rec <- factor(Base$s03q32,


labels= names(attr(Base$s03q32, "labels")),
levels=unname(attr(Base$s03q32, "labels")))

Base$mil_resid <- factor(Base$s00q04,


labels= names(attr(Base$s00q04, "labels")),
levels=unname(attr(Base$s00q04, "labels")))

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 ?

Base$s03q32_rec <- factor(Base$s03q32,


labels= names(attr(Base$s03q32, "labels")),
levels=unname(attr(Base$s03q32, "labels")))

Base$mil_resid <- factor(Base$s00q04,


labels= names(attr(Base$s00q04, "labels")),
levels=unname(attr(Base$s00q04, "labels")))

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 ?

Base$s03q19_rec <- factor(Base$s03q19,


labels= names(attr(Base$s03q19, "labels")),
levels=unname(attr(Base$s03q19, "labels")))

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

Base$mil_resid <- factor(Base$s00q04,


labels= names(attr(Base$s00q04, "labels")),
levels=unname(attr(Base$s00q04, "labels")))

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.

#'s03q38: Dormez-vous habituellement


#'sous une moustiquaire ?

Base$s03q40_rec <- factor(Base$s03q40,


labels= names(attr(Base$s03q40, "labels")),
levels=unname(attr(Base$s03q40, "labels")))

Base$s03q38_rec <- factor(Base$s03q38,


labels= names(attr(Base$s03q38, "labels")),
levels=unname(attr(Base$s03q38, "labels")))

Base %>% filter(![Link](s03q38_rec)) %>%


ggplot()+
geom_bar(aes(x=s03q38_rec,
y=after_stat(count*100/sum(count)),
fill=s03q40_rec))+
facet_grid(cols= vars(s03q40_rec))

Code chunk N7
#'s03q40: Moyens de prévention
#'du paludisme autres que moutiquaire,
#'suivant la tendance à
#'utiliser une moustiquaire.

#'s03q38: Dormez-vous habituellement


#'sous une moustiquaire ?

Base$s03q40_rec <- factor(Base$s03q40,


labels= names(attr(Base$s03q40, "labels")),
levels=unname(attr(Base$s03q40, "labels")))

Base$s03q38_rec <- factor(Base$s03q38,


labels= names(attr(Base$s03q38, "labels")),
levels=unname(attr(Base$s03q38, "labels")))

Base %>% filter(![Link](s03q38_rec)) %>%


ggplot()+
geom_bar(aes(x=s03q38_rec,
y=after_stat(count*100/sum(count)),
fill=s03q40_rec))+
facet_wrap(vars(s03q40_rec), nrow=2)+
theme([Link] = "top")

37
Here are the ouputs:

Figure 3: This is an output

Figure 4: This is another output

2) How about making some analyses ?


a)Importing the database and describing it
Explorons la base de données pour mieux nous familiariser avec elle. Elle
# Dimensions de la base
dim(Base)

## [1] 66120 66
La base possède 66120 observations et pour 62 variables.

38
Figure 5: And another

Figure 6: And another

Figure 7: And another

39
Figure 8: And another

Figure 9: 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]]))
}

t <- [Link](cbind(Variables, type, noms))

#'Le tableau t nous donne les variables,


#'leur type
#'les questions qu'elles représentent.

kable(t, [Link] = "style='width:40%;'",


caption = "Variables de la base,
leurs types et leurs labels") %>%
kable_classic(full_width = F,
position = "center" )

Table 4: Variables de la base, leurs types et leurs labels

Variables type noms


vague double Vague
grappe double grappe
menage double Identifiant du ménage
s01q00a double 01.00a. CODE ID du répondant
s00q01 double 0.01. Région
s00q04 double 0.04. Milieu de résidence
s01q01 double 1.01. Sexe
s03q00 double 3.00. Qui est le répondant ?
s03q01 double 3.01. [NOM] a t-il été hospitalisé, suit à 1 pbdsanté, durant lé 30 dniers jrs
s03q02 double 3.02. Quel a été le principal problème de santé que [NOM] a eu?
s03q03 double 3.03. Ce probleme d santé a empêché [NOM] d mener ses activités quoti. Norm?
s03q04 double 3.04. Pdt comb. d tps maladie a-t-elle empêché [NOM] d mener ses ActivQuotiNorm
s03q05 double 3.05. [NOM] cnsulté 1servicdsanté/guéri. tradi. 30 drns jrs du fait ce pb santé
s03q06 double 3.06. Pour quelle raison principale [NOM] n’a-t-il pas été consulté (e)?
s03q07 double 3.07. Où [NOM] été consulté la première fois pour cet épisode de maladie?
s03q08 double 3.08. Qui [NOM] a-t-il consulté la première fois pour cet épisode de maladie ?
s03q09 double 3.09. [NOM] a-t-il été satisfait du service reçu lors d cette 1ère consultation
s03q10__1 double s03q10_1. Est c qu [NOM] a eu des pbs d’établissment pas propr durant sa visit?
s03q10__2 double s03q10_2. Est c qu [NOM] a eu des pbs de longues attentes durant sa visit?
s03q10__3 double s03q10_3. Est c qu [NOM] a eu des pbs de pers. non qualif. durant sa visit?
s03q10__4 double s03q10_4. Est c qu [NOM] a eu des pbs de chéreté du service durant sa visit?
s03q10__5 double s03q10_5. Est c qu [NOM] a eu des pbs d’absence de médic. durant sa visit?
s03q10__6 double s03q10_6. Est c qu [NOM] a eu des pbs de traitement inefficace durant sa visit?
s03q10__7 double s03q10_7. Est c qu [NOM] a eu des pbs de mauvais accueil durant sa visit?
s03q10__8 double s03q10_8. Est c qu [NOM] a eu des pbs d’absence du personnel durant sa visit?
s03q10__9 double s03q10_9. Est c qu [NOM] a eu des pbs d’autres types durant sa visit?

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

Il serait intéressant de faire la répartition de l’échantillon suivant les différentes régions.


# Let's make a bar plot

Base$Reg_rec <- factor(Base$s00q01,


labels= names(attr(Base$s00q01, "labels")),
levels=unname(attr(Base$s00q01, "labels")))

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

b) Let’s dig deep into the database. . .


Le tableau précédent nous sera très utile. Il suggère quelques analyses descriptives que nous auront le plaisir
de réaliser ensemble.
Ready ? Steady ? Go!

Base$s03q01_rec <- factor(Base$s03q01,


labels= names(attr(Base$s03q01, "labels")),
levels=unname(attr(Base$s03q01, "labels")))

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.

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

Source : ANSD, EHCVM 2018/2019,


calculs propres

####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")))

Base$pblems <- factor(Base$s03q02,


labels= names(attr(Base$s03q02, "labels")),
levels=unname(attr(Base$s03q02, "labels")))

Base %>% filter(s03q01==1 & ![Link](pblems)) %>%


ggplot() +
geom_bar(aes(y=pblems,
x=after_stat(count*100/sum(count)),
fill=mil_resid),
position="dodge",

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 & ![Link](pblems)) %>%
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 & ![Link](pblems)) %>%
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 ")

Principaux problèmes de Reg_rec


santé rencontrés par région DAKAR
ZIGUINCHOR
1.5
DIOURBEL
SAINT−LOUIS
TAMBACOUNDA
1.0
Problèmes

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

Reg_rec ZIGUINCHOR TAMBACOUNDA LOUGA MATAM SEDHIOU

DIOURBEL KAOLACK FATICK KAFFRINE


Part dans l'échantillon

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 & ![Link](pblems)) %>%
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

Diarrhée Maladie des yeux Mal de gorge Autre Règles douloureuses


pblems
Accident/Blessure Problème de tension Toux, rhume Maux de ventre

Problème dentaire Fièvre typhoïde Diabète Maux de tête

DAKAR ZIGUINCHOR DIOURBEL SAINT−LOUIS

400

200

0
TAMBACOUNDA KAOLACK THIES LOUGA

400

200

0
count

FATICK KOLDA MATAM KAFFRINE

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

Base$raisons <- factor(Base$s03q06,


labels= names(attr(Base$s03q06, "labels")),
levels=unname(attr(Base$s03q06, "labels")))

#'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.

Raisons de non consultation


suivant le milieu de résidence
Autre (à préciser)

Manque d'argent

Refus

Peur du résultat mil_resid


raisons

Pas de confiance Urbain


Rural
Automédication

Trop éloigné

Trop cher

Pas nécessaire

0.00 0.25 0.50 0.75 1.00


Raisons
Source : ANSD,
EHCVM 2018/2019, calculs propres

On vit donc , pour raison évoquée, la répartition en fonction du milieu de résidence.


Et si l’on “superposait” des graphiques, l’un en-dessous de l’autre.
Base %>% filter(s03q01==1 & s03q05==2) %>% # Si la personne a rencontré un problème de santé mais ne s'e
ggplot() +
geom_bar(aes(y=mil_resid,
x=after_stat(count*100/sum(count)),
fill=raisons),
position="dodge",
color="white")+
theme_minimal()+
facet_grid(rows = vars(raisons))+
labs(title = "Raisons de non consultation
suivant le milieu de résidence",
x="Raisons", caption="Source : ANSD,

49
EHCVM 2018/2019, calculs propres ")

Raisons de non consultation

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.

Base %>% filter(s03q01==1 & s03q05==2) %>%


ggplot() +
geom_bar(aes(y=mil_resid,
x=after_stat(count*100/sum(count)),
fill=raisons ),
position="fill",
color="white")+
theme_minimal()+
labs(title = "Raisons de non consultation
par milieu de résidence",
y="Part dans l'échantillon",
x="Raisons",
caption="Source : ANSD, EHCVM 2018/2019,
calculs propres ")

50
Raisons de non consultation
par milieu de résidence

raisons
Pas nécessaire
Part dans l'échantillon

Rural Trop cher


Trop éloigné
Automédication
Pas de confiance
Peur du résultat

Urbain Refus
Manque d'argent
Autre (à préciser)

0.00 0.25 0.50 0.75 1.00


Raisons
Source : ANSD, EHCVM 2018/2019,
calculs propres

Le graphique ce-dessus permet de voir des fréquences relatives.


Retournons le graphique pour une mailleure visualisation.
Base %>% filter(s03q01==1 & s03q05==2) %>%
ggplot() +
geom_bar(aes(y=mil_resid,
x=after_stat(count*100/sum(count)),
fill=raisons ),
position="dodge",
color="white")+
theme_minimal()+
labs(title = "Part des raisons de non
consultation par milieu de résidence",
y="Milieu de résidence",
x="Raisons",
caption="Source : ANSD, EHCVM 2018/2019,
calculs propres ")+
coord_flip()

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

####Répartition des principaux lieux de consultation en fonction du milieu de résidence.


Base$lieu_cons <- factor(Base$s03q08,
labels= names(attr(Base$s03q08, "labels")),
levels=unname(attr(Base$s03q08, "labels")))

Base %>% filter(s03q01==1 & s03q05==1) %>%


ggplot() +
geom_bar(aes( x= lieu_cons,
y=after_stat(count*100/sum(count)),
fill= mil_resid), color="white")+
theme_minimal()+
labs(title = "Lieux de consultation
suivant le milieu de résidence. ",
x="Lieux de consultation",
caption="Source : ANSD, EHCVM 2018/2019,
calculs propres ")+
coord_flip()

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

##3) BONUS: Let’s make some maps


Représentons le Sénégal, le Camaroun et Madagascar. . .
#[Link]("maps")
library(maps)

# Getting map data for our Senegal

SN <- map_data("world", region="Senegal")

# Plot the map


ggplot() +
geom_polygon(data = SN, aes(x = long,
y = lat,
group = group,
fill=region),
color = "black", fill = "green")

53
16

15
lat

14

13

−16 −14 −12


long

#[Link]("maps")

# Getting map data for our Senegal

SN <- map_data("world", region="Cameroon")

# Plot the map


ggplot() +
geom_polygon(data = SN, aes(x = long,
y = lat,
group = group,
fill=region),
color = "black", fill = "yellow")

54
10
lat

10 12 14 16
long

#[Link]("maps")

# Getting map data for our Senegal

SN <- map_data("world", region="Madagascar")

# Plot the map


ggplot() +
geom_polygon(data = SN, aes(x = long,
y = lat,
group = group,
fill=region),
color = "black", fill = "blue")

55
−15
lat

−20

−25

43 45 47 49
long

Représentons l’Afrique !!!


library(rnaturalearth)
library(rnaturalearthdata)

#'Télécharger les données


#'des frontières des pays du monde
world <- ne_countries(scale = "medium",
returnclass = "sf")

#'Plot de la carte de l'Afrique


#'avec une couleur pour chaque pays
#'
ggplot(data = world[world$continent == "Africa", ]) +
geom_sf(aes(fill = name), color = "black") +
scale_color_brewer(palette =2 ) +
labs(title = "Carte de l'Afrique
avec une couleur pour chaque pays") +
theme_minimal()

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

Central African Rep. Lesotho Somaliland

20°S Chad Liberia South Africa


Comoros Libya Sudan
40°S
Congo Madagascar Tanzania
20°W 0° 20°E 40°E
Côte d'Ivoire Malawi Togo
Dem. Rep. Congo Mali Tunisia
Djibouti Mauritania Uganda
Egypt Morocco W. Sahara
Eq. Guinea Mozambique Zambia
Eritrea Namibia Zimbabwe

57

Vous aimerez peut-être aussi