La fonction mf_map() est la fonction centrale du package mapsf. Elle permet de réaliser la plupart des représentations usuelles en cartographie. Ces arguments principaux sont :
x, un objet sf ;
var, le nom de la variable à représenter ;
type, le type de représentation.
6.1 Les données d’exemple
Les lignes suivantes importent les couches d’information spatiales situées dans le fichier geopackagelot46.gpkg.
library(sf)
#> Linking to GEOS 3.9.0, GDAL 3.2.2, PROJ 7.2.1; sf_use_s2() is TRUE
# import des communes du Lotcom <-st_read("data/lot46.gpkg", layer ="commune", quiet =TRUE)# import des départments françaisdep <-st_read("data/lot46.gpkg", layer ="departement", quiet =TRUE)# import des restaurantsresto <-st_read("data/lot46.gpkg", layer ="restaurant", quiet =TRUE)# import des routesroute <-st_read("data/lot46.gpkg", layer ="route", quiet =TRUE)
6.2 Afficher un fond de carte
Utilisée sans précision de type, la fonction mf_map() affiche simplement le fond de carte.
Les cartes de symboles proportionnels sont utilisées pour représenter les variables de stocks (variables quantitatives absolues, la somme et la moyenne ont un sens). La fonction mf_map(..., type = "prop") propose cette représentation.
# Communesmf_map(x = com)# Symboles proportionnelsmf_map(x = com, var ="POPULATION",type ="prop",leg_title ="Population totale\n(2015)")# Titremf_title("Distribution de la population dans le Lot")
6.3.1 Comparer plusieurs cartes
Il est possible de fixer les dimensions du plus grand symbole correspondant à une certaine valeur avec les arguments inches et val_max. Nous pouvons ainsi construire des cartes en symboles proportionnels comparables.
# Afficher deux cartes en vis-à-vispar(mfrow =c(1,2))# Communesmf_map(x = com, border ="grey90", lwd = .5)# Population active occupée dans l'industrie, les hommesmf_map(x = com, var ="IND_H", type ="prop", inches = .2, val_max =600, leg_title ="Hommes", leg_val_cex = .5,)# ajout d'un titremf_title("Population active occupée dans l'industrie")# Communesmf_map(x = com, border ="grey90", lwd = .5)# Population active occupée dans l'industrie, les femmesmf_map(x = com, var ="IND_F", type ="prop",inches = .2, val_max =600, leg_title ="Femmes", leg_val_cex = .5)# ajout d'un titremf_title("Population active occupée dans l'industrie")
Les cartes choroplèthes sont utilisées pour représenter les variables de ratios (variables quantitatives relatives, la moyenne a un sens, la somme n’a pas de sens).
Pour ce genre de représentation il faut au préalable :
choisir une méthode de discrétisation pour transformer une série statistique continue en classes définies par des intervalles,
choisir un nombre de classes,
choisir une palette de couleurs.
La fonction mf_map(..., type = "choro") permet de créer des cartes choroplètes. Les arguments nbreaks et breaks servent à paramétrer les discrétisations, et la fonction mf_get_breaks() permet de travailler sur les discrétisations en dehors de la fonction mf_map(). De même, l’argument pal est utilisé pour renseigner une palette de couleur, mais plusieurs fonctions peuvent être utilisées pour paramétrer les palettes en dehors de la fonction (mf_get_pal()…).
# Densité de population (hab./km2) en utilisant la fonction sf::st_area()com$DENS <-1e6* com$POP /as.numeric(st_area(com))mf_map(x = com,var ="DENS",type ="choro",breaks ="quantile",pal ="Dark Mint",lwd =1,leg_title ="Densité de population\n(habitants par km2)", leg_val_rnd =0)mf_title("Distribution de la population dans le Lot (2018)")
6.4.1 Discrétisations
La fonction mf_get_breaks() met à disposition les méthodes de discrétisations de variables classique : quantiles, moyenne/écart-type, amplitudes égales, moyennes emboîtées, Fisher-Jenks, géométrique …
L’argument pal de mf_map() est dédié au choix d’une palette de couleur. Les palettes fournies par la fonction hcl.colors() peuvent être utilisées directement.
mf_map(x = com, var ="SHARE_ACT", type ="choro",breaks = d4, pal ="Blues 3")
La fonction mf_get_pal() permet de construire une palette de couleur. Cette fonction est surtout utile pour créer des palettes divergentes asymétriques équilibrées.
Il est possible d’utiliser ce mode de représentation en implémentation ponctuelle également.
com_c <-st_centroid(com)
#> Warning in st_centroid.sf(com): st_centroid assumes attributes are constant over
#> geometries of x
mf_map(com)mf_map(x = com_c,var ="DENS",type ="choro",breaks ="quantile",nbreaks =4,pal ="Dark Mint",pch =24,cex =2,border ="white",lwd = .7,leg_pos ="topleft",leg_title ="Densité de population\n(habitants par km2)", leg_val_rnd =0, add =TRUE)mf_title("Distribution de la population dans le Lot (2018)")
6.5 Carte de typologie
Les cartes de typologies sont utilisées pour représenter les variables qualitatives.
La fonction mf_map(..., type = "typo") propose cette représentation.
Quand l’implantation de la couche est ponctuelle, des symboles sont utilisés pour porter les couleurs de la typologie.
# extraction des centroides de la préfectures et des sous-préfecturescom_ctr <-st_centroid(com[com$STATUT !="Commune simple", ])
#> Warning in st_centroid.sf(com[com$STATUT != "Commune simple", ]): st_centroid
#> assumes attributes are constant over geometries of x
mf_map(com)mf_map(x = com_ctr, var ="STATUT", type ="typo", cex =3, pch =23, pal =c("aquamarine4", "yellow3"),leg_title ="", add =TRUE)mf_title("Statut Administratif")
6.5.3 Les cartes de lignes
# Sélection des routes qui intersectent la commune de Cahorscahors <- com[com$NOM_COM =="Cahors", ]route_cahors <- route[st_intersects(x = route, y = cahors, sparse =FALSE), ]mf_map(cahors)mf_map(x = route_cahors,var ="VOCATION",type ="typo", lwd =2,pal =mf_get_pal(n =4, "Dark 2"),leg_title ="Type de route",add =TRUE)mf_title("Statut Administratif")
6.6 Carte de stocks et de ratios
La fonction mf_map(..., var = c("var1", "var2"), type = "prop_choro") représente des symboles proportionnels dont les surfaces sont proportionnelles aux valeurs d’une variable et dont la couleur repose sur la discrétisation d’une seconde variable. La fonction utilise les arguments des fonctions mf_map(..., type = "prop") et mf_map(..., type = "choro").
La fonction mf_map(..., var = c("var1", "var2"), type = "prop_typo") représente des symboles proportionnels dont les surfaces sont proportionnelles aux valeurs d’une variable et dont la couleur représente les modalités d’une variable qualitative. La fonction utilise les arguments des fonctions mf_map(..., type = "prop") et mf_map(..., type = "typo").
Créer une carte de la part de la population active dans la population totale.
Quel mode de représentation utiliser? Quels choix cela implique-t-il?
com$SACT <-100* com$ACT / com$POPULATION
htitle <-"Part de la population active ocuppée dans la population totale (Lot, 2017)"hxlab <-"en %"hist(com$SACT, main = htitle, xlab = hxlab, freq =FALSE)
summary(com$SACT)
#> Min. 1st Qu. Median Mean 3rd Qu. Max.
#> 7.812 23.104 26.754 27.265 31.537 52.083