Dans un billet précédent, je proposais une solution pour créer des cartons cartographique en jouant avec les paramètres graphiques des figures.
Dans celui-ci j’introduis le package mapinsetr
qui permet de créer “en dur” des fond de carte comprenant des cartons.
J’utilise les jeux de données, la problématique et une partie du code proposés par Arthur Charpentier dans son post “Cartographier le vote pour le Brexit“.
Le script complet (import et préparation des données, visualisations) est disponible ici.
[MAJ 15-12-2016] Ajout de la source des données [/MAJ]
Vote majoritaire au référendum sur le brexit
library(cartography)
plot(UK, ylim = c(3100000, 4100000), xlim = c(2950000, 3750000),
col = NA, border = NA, bg = "#A6CAE0")
plot(IRL, col = "lightgrey", border = NA, add=TRUE)
plot(FR, col = "lightgrey", border = NA, add=TRUE)
typoLayer(spdf = UK, spdfid = "id",
df = referendum, dfid = "HASC_code",
var = "brexit",
col = c("#5A9C50", "#EC4E49"),
legend.pos = 'topleft',
legend.title.txt = "",
add = TRUE)
layoutLayer(title = "Vote majoritaire au référendum sur le brexit",
author = "Données: The Electoral Comission (https://frama.link/ElectoralCommissionUK)",
sources = "Fond de carte: GADM 2.8 (http://gadm.org/)",
theme = "blue.pal", scale = 100)
Part du Leave dans le vote au référendum
plot(UK, ylim = c(3100000, 4100000), xlim = c(2950000, 3750000),
col = NA, border = NA, bg = "#A6CAE0")
plot(IRL, col = "lightgrey", border = NA, add=TRUE)
plot(FR, col = "lightgrey", border = NA, add=TRUE)
# limites des classes
bks <- c(min(referendum$shareLeave),
seq(30,70,10),
max(referendum$shareLeave))
# palette de couleur
cols <- carto.pal(pal1 = "green.pal", n1 = 3,
pal2 = "red.pal", n2 = 3)
choroLayer(spdf = UK, spdfid = "id",
df = referendum, dfid = "HASC_code",
var = "shareLeave", breaks = bks,
col = cols,
legend.pos = 'topleft',
legend.title.txt = "Part du vote 'leave'\n (en %)",
add = TRUE)
layoutLayer(title = "Part du 'Leave' au référendum sur le brexit",
author = "Données: The Electoral Comission (https://frama.link/ElectoralCommissionUK)",
sources = "Fond de carte: GADM 2.8 (http://gadm.org/)",
theme = "blue.pal", scale = 100)
Part du Leave rapporté au nombre de suffrages exprimés
Il est intéressant de représenter simultanément la part de vote pour le Leave et le nombre total de votes exprimés. Pour cela nous allons combiner une représentation en cercles proportionnels (pour le nombre de votes exprimés) et une colorations de ceux-ci en fonction de la part du vote pour le Leave.
plot(UK, ylim = c(3100000, 4100000), xlim = c(2950000, 3750000),
col = "grey50", border = "grey80",lwd = 0.5, bg = "#A6CAE0")
plot(IRL, col = "lightgrey", border = NA, add=TRUE)
plot(FR, col = "lightgrey", border = NA, add=TRUE)
propSymbolsChoroLayer(spdf = UK, spdfid = "id",
df = referendum, dfid = "HASC_code",
var = "nvote",inches = 0.2,
var2 = 'shareLeave',
breaks = bks,
col = cols)
layoutLayer(title = "Répartition et part du 'Leave' au référendum sur le brexit",
author = "Données: The Electoral Comission (https://frama.link/ElectoralCommissionUK)",
sources = "Fond de carte: GADM 2.8 (http://gadm.org/)",
theme = "blue.pal", scale = 100)
text(x = 3018138, y = 3255515,
font = 2, srt = 33, cex = 1, pos = 4,
labels = "La carte n'est pas lisible\ndans la région de Londres")
Ce premier essai n’est pas totalement concluant, il est très difficile de lire la carte dans la région de Londres où les unités sont très petites et où les cercles se superposent.
Nous allons donc créer un carton de zoom sur la région de Londres avec le package mapsinsetr
.
Installation du package
Le package est hébergé sur GitHub seulement pour l’instant.
library(devtools)
install_github('riatelab/mapinsetr')
Création du fond de carte contenant le carton de zoom
library(mapinsetr)
# définition d'une bounding box autour de la région de Londres
bb <- matrix(data = c(3598988, 3648341, 3177688, 3221347),
nrow = 2, ncol = , byrow = T )
# création d'un masque destiné à extraire les unités londoniennes
londonMask <- create_mask(bb = bb,
add = FALSE,
prj = UK@proj4string)
# déplacement et redimensionnement des unités
zoomLondon <- move_and_resize(spdf = UK,
mask = londonMask,
xy = c(3001055, 3196670),
k = 4)
# déplacement et redimensionnement du masque
zoomBox <- move_and_resize(spdf = londonMask,
mask = londonMask,
xy = c(3001055, 3196670),
k = 4)
# fusion du fond de carte initial et du zoom
UK2 <- inset_rbinder(list(UK, zoomLondon))
# affichage du fond de carte
plot(UK2)
layoutLayer("Fond de carte UK avec zoom sur Londres", scale = NULL,
north = FALSE, sources = "", author = "")
Cartographie avec le nouveau fond de carte
plot(FR, ylim = c(3100000, 4100000), xlim = c(2950000, 3750000),
col = 'lightgrey', border = NA, bg = "#A6CAE0")
plot(IRL, col = "lightgrey", border = NA, add=TRUE)
plot(UK2, col = "grey50", border = "grey80",lwd = 0.5, add=TRUE)
plot(zoomBox, lwd = 1, add=T)
text(x = 3001055, y = 3196670, labels = "Zoom sur Londres",
adj = c(0,1.5), cex = 0.7 )
propSymbolsChoroLayer(spdf = UK2, spdfid = "id",
df = referendum, dfid = "HASC_code",
var = "nvote",inches = 0.2,
legend.var.title.txt = "Nombre de\nvotes exprimés",
legend.var.pos = "topleft",
var2 = 'shareLeave',
legend.var2.pos = "left",
legend.var2.values.rnd = 0,
legend.var2.title.txt = "Part du vote\n'Leave' (en %)",
breaks = bks,
col = cols)
plot(londonMask, lwd = 1, add=T)
layoutLayer(title = "Répartition et part du 'Leave' au référendum sur le brexit",
author = "Données: The Electoral Comission (https://frama.link/ElectoralCommissionUK)",
sources = "Fond de carte: GADM 2.8 (http://gadm.org/)",
theme = "blue.pal", scale = 100)
Cette carte est plus satisfaisante, la situation dans la capitale du Royaume-Uni est beaucoup plus lisible.
OpenEdition vous propose de citer ce billet de la manière suivante :
Timothée Giraud (12 décembre 2016). mapinsetr, faire un carton avec R. R Géomatique. Consulté le 9 décembre 2024 à l’adresse https://doi.org/10.58079/tp40
Je ne sais pas ce qu’Arthur a utilisé comme données pour le vote, mais les résultats du vote sont en ligne sur le site de la commission électorale.
P.S. Je peux confirmer, les données sont les mêmes.
Merci pour l’info, je rajouterai les sources dans le scripts et les cartes demain.