library(animint2)
data(BanqueMondiale, package="animint2fr")
BanqueMondiale$Region <- sub(" (all income levels)", "", BanqueMondiale$region, fixed=TRUE)
library(data.table)
not.na <- data.table(
BanqueMondiale)[!(is.na(espérance.de.vie) | is.na(taux.de.fertilité))]8 Visualisation des données de la Banque mondiale
Traduction de l’anglais Ch08-WorldBank-facets
Dans ce chapitre, nous allons explorer plusieurs visualisations des données de la Banque mondiale.
Plan du chapitre :
- Nous commençons par charger le jeu de données de la Banque mondiale et par définir quelques fonctions d’aide pour créer un ggplot multi-panneaux avec plusieurs geoms.
- Nous créons ensuite un graphique de série temporelle pour l’espérance de vie.
- Nous ajoutons ensuite un nuage de points de l’espérance de vie en fonction du taux de fertilité dans un deuxième panneau.
- Nous ajoutons ensuite un troisième panneau avec une série temporelle pour le taux de fertilité.
8.1 Chargement des données et définition des fonctions d’aide
Tout d’abord, nous chargeons l’ensemble des données de la Banque mondiale, et nous ne considérons que le sous-ensemble qui a des valeurs non manquantes à la fois pour espérance.de.vie et taux.de.fertilité.
Nous allons également tracer la variable population à l’aide d’une légende de taille. Avant de tracer le graphique, nous nous assurerons qu’aucune valeur n’est manquante.
not.na[is.na(not.na$population)] iso2c country year fertility.rate life.expectancy population
1: KW Kuwait 1992 2.338 72.95266 NA
2: KW Kuwait 1993 2.341 73.07373 NA
3: KW Kuwait 1994 2.413 73.18724 NA
GDP.per.capita.Current.USD 15.to.25.yr.female.literacy iso3c
1: NA NA KWT
2: NA NA KWT
3: NA NA KWT
region capital longitude
1: Middle East & North Africa (all income levels) Kuwait City 47.9824
2: Middle East & North Africa (all income levels) Kuwait City 47.9824
3: Middle East & North Africa (all income levels) Kuwait City 47.9824
latitude income lending Region
1: 29.3721 High income: nonOECD Not classified Middle East & North Africa
2: 29.3721 High income: nonOECD Not classified Middle East & North Africa
3: 29.3721 High income: nonOECD Not classified Middle East & North Africa
région espérance.de.vie taux.de.fertilité année
1: Moyen-Orient et Afrique du Nord 72.95266 2.338 1992
2: Moyen-Orient et Afrique du Nord 73.07373 2.341 1993
3: Moyen-Orient et Afrique du Nord 73.18724 2.413 1994
pays PIB.par.habitant.USD alphabétisation revenu
1: Koweït NA NA Revenu élevé : nonOCDE
2: Koweït NA NA Revenu élevé : nonOCDE
3: Koweït NA NA Revenu élevé : nonOCDE
Le tableau ci-dessus montre que trois lignes ont des valeurs manquantes pour la variable population. concernant le Koweït entre 1992 et 1994. Le tableau ci-dessous présente les données des années voisines, de 1991 à 1995.
not.na[pays == "Kuwait" & 1991 <= année & année <= 1995]Empty data.table (0 rows and 24 cols): iso2c,country,year,fertility.rate,life.expectancy,population...
Le tableau ci-dessus montre que la population du Koweït a diminué au cours de la période 1991-1995, ce qui concorde avec la guerre du Golfe survenue à cette époque. Nous remplissons les valeurs manquantes ci-dessous.
not.na[is.na(population), population := 1700000]
not.na[pays == "Kuwait" & 1991 <= année & année <= 1995]Empty data.table (0 rows and 24 cols): iso2c,country,year,fertility.rate,life.expectancy,population...
Ensuite, nous définissons la fonction d’aide suivante, qui sera utilisée pour ajouter des colonnes aux ensembles de données afin d’affecter des geoms aux facettes.
FACETS <- function(df, top, side){
data.frame(df,
top=factor(top, c("Taux de fertilité", "Années")),
side=factor(side, c("Années", "Espérance de vie")))
}Notez que les niveaux des facteurs spécifieront l’ordre des facettes dans le ggplot. Ceci est un exemple de l’idiome addColumn then facet . Nous définissons ci-dessous trois fonctions d’aide, une pour chaque facette.
TS.RIGHT <- function(df)FACETS(df, "Années", "Espérance de vie")
SCATTER <- function(df)FACETS(df, "Taux de fertilité", "Espérance de vie")
TS.ABOVE <- function(df)FACETS(df, "Taux de fertilité", "Années")8.2 Premier graphique de la série temporelle
Tout d’abord, nous définissons un ensemble de données avec une ligne pour chaque année, que nous utiliserons pour sélectionner les années à l’aide d’un geom_tallrect en arrière-plan.
années <- unique(not.na[, .(année)])Nous définissons le ggplot avec un geom_tallrect en arrière-plan, et un geom_line pour les séries temporelles.
ts.right <- ggplot()+
geom_tallrect(aes(
xmin=année-1/2, xmax=année+1/2),
clickSelects="année",
data=TS.RIGHT(années), alpha=1/2)+
geom_line(aes(
année, espérance.de.vie, group=pays, colour=Region),
clickSelects="pays",
data=TS.RIGHT(not.na), size=4, alpha=3/5)
ts.right
Remarquez que nous avons spécifié clickSelects=année pour qu’un clic sur un tallrect modifie l’année sélectionnée, et clickSelects=pays pour que le fait de cliquer sur une ligne sélectionne ou désélectionne un pays. Notez également que nous avons utilisé TS.RIGHT pour identifier les colonnes que nous utiliserons dans la spécification des facettes (section suivante).
8.3 Ajouter une facette de nuage de points
Nous commençons par ajouter simplement des facettes au graphique de la série temporelle précédente.

Nous définissons panel.margin à 0, ce qui est toujours une bonne idée pour économiser de l’espace dans un ggplot avec des facettes. Dans un des exemples tiré de, dans un exemple de l’idiome addColumn then facet, nous utilisons scales="free" et nous masquons les étiquettes des axes . Pour les remplacer, nous utilisons le libellé de la facette pour indiquer la variable encodée sur chaque axe. Ci-dessous, nous ajoutons une facette de nuage de points avec un point pour chaque année et chaque pays.
ts.scatter <- ts.facet+
theme_animint(width=600)+
geom_point(aes(
taux.de.fertilité, espérance.de.vie,
colour=Region, size=population,
key=pays), # key aesthetic for animated transitions!
clickSelects="pays",
showSelected="année",
data=SCATTER(not.na))+
scale_size_animint(pixel.range=c(2, 20), breaks=10^(9:5))
ts.scatter
Remarquez comment nous utilisons scale_size_animint pour spécifier l’échelle des tailles en pixels, et les intervalles (breaks) dans la légende. Notez également que nous utilisons SCATTER pour spécifier les colonnes top et side qui sont utilisées dans la spécification de la facette. Nous affichons également ce ggplot de manière interactive ci-dessous.
animint(ts.scatter)Notez que la sélection unique est utilisée par défaut pour l’année et le pays.
8.4 Ajout d’une autre facette pour les séries temporelles
Ci-dessous, nous ajoutons des widerects pour sélectionner les années, et des chemins d’accès (“path”) pour afficher le taux de fertilité.
scatter.both <- ts.scatter+
geom_widerect(aes(
ymin=année-1/2, ymax=année+1/2),
clickSelects="année",
data=TS.ABOVE(années), alpha=1/2)+
geom_path(aes(
taux.de.fertilité, année, group=pays, colour=Region),
clickSelects="pays",
data=TS.ABOVE(not.na), size=4, alpha=3/5)
scatter.both
Notez que TS.ABOVE a été utilisé pour spécifier les colonnes des facettes top et side. Nous affichons une version interactive ci-dessous.
viz.scatter.both <- animint(
title="Données de la Banque mondiale (multiple selection, facets)",
scatterBoth=scatter.both+
theme_animint(width=1000, height=800),
duration=list(année=1000),
time=list(variable="année", ms=3000),
first=list(année=1975, pays=c("United States", "Vietnam")),
selector.types=list(pays="multiple"))
viz.scatter.both8.5 Résumé du chapitre et exercices
Nous avons montré comment créer une visualisation multicouche et multipanneaux (mais à graphique unique) des données de la Banque mondiale.
Exercices :
- Sur chaque graphique de série temporelle, ajoutez un point dont la taille est proportionnelle à la population, comme dans le nuage de points. Les points ne doivent apparaître que lorsque le pays est sélectionné, et un clic sur les points doit désélectionner ce pays.
- Ajoutez des étiquettes de texte au graphique de la série temporelle situé à droite, avec les noms de chaque pays. Chaque étiquette ne doit apparaître que lorsque le pays est sélectionné, et doit disparaître lorsqu’on clique sur l’étiquette.
- Ajoutez une étiquette de texte au nuage de points pour indiquer l’année sélectionnée.
- Ajoutez des étiquettes de texte au nuage de points, avec des noms pour chaque pays. Chaque étiquette ne doit apparaître que lorsque le pays est sélectionné, et doit disparaître lorsqu’on clique sur l’étiquette.
Le chapitre 9 présente comment visualiser les données sur les vélos à Montréal.