library(sf)
# import des communes du Lot
<- st_read("data/lot.gpkg", layer = "communes", quiet = TRUE)
com # import des départements français
<- st_read("data/lot.gpkg", layer = "departements", quiet = TRUE)
dep # import des restaurants
<- st_read("data/lot.gpkg", layer = "restaurants", quiet = TRUE)
resto # import des routes autour de la commune de Gramat
<- st_read("data/lot.gpkg", layer = "routes", quiet = TRUE) route
4 La mise en page
Pour être finalisée, une carte thématique doit contenir certains éléments additionnels tels que : le titre, l’auteur, la source, l’échelle, l’orientation…
4.1 Les données d’exemple
Les lignes suivantes importent les couches d’information spatiales situées dans le fichier geopackage lot.gpkg.
4.2 Les thèmes
La fonction mf_theme()
définit un thème cartographique. L’utilisation d’un thème permet de définir plusieurs paramètres graphiques qui sont ensuite appliqués aux cartes créées avec mapsf
. Ces paramètres sont : les marges de la carte, la couleur principale, la couleur de fond, la position et l’aspect du titre.
4.2.1 Utiliser un thème prédéfini
Une série de thèmes prédéfinis est disponible par défaut (voir ?mf_theme
).
library(mapsf)
# Utilisation d'un thème prédéfini
mf_theme("default")
mf_map(com)
mf_title("Theme : 'default'")
mf_theme("darkula")
mf_map(com)
mf_title("Theme : 'darkula'")
mf_theme("candy")
mf_map(com)
mf_title("Theme : 'candy'")
mf_theme("nevermind")
mf_map(com)
mf_title("Theme : 'nevermind'")
4.2.2 Modifier un thème existant
Il est possible de modifier un thème existant. Dans cet exemple, nous utilisons le thème “default” et nous en modifions quelques paramètres.
library(mapsf)
mf_theme("default")
mf_map(com)
mf_title("default")
mf_theme("default", tab = FALSE, font = 4, bg = "grey60", pos = "center")
mf_map(com)
mf_title("modified default")
4.2.3 Créer un thème
Il est également possible de créer un thème.
mf_theme(
bg = "lightblue", # couleur de fond
fg = "tomato1", # couleur principale
mar = c(0,0,1.5,0), # marges
tab = FALSE, # style "onglet" pour le titre
inner = FALSE, # titre à l'intérieur de la zone de carte ou à l'extérieur
line = 1.5, # espace dédié au titre
pos = "center", # position du titre
cex = 1.2, # taille du titre
font = 2 # type de fonte pour le titre
)mf_map(com)
mf_title("New theme")
4.3 Les titres
La fonction mf_title()
permet d’ajouter un titre à une carte.
mf_theme("default")
mf_map(com)
mf_title("Titre de la carte")
Il est possible de personnaliser l’aspect du titre.
mf_map(com)
mf_title(
txt = "Titre de la carte",
pos = "center",
tab = FALSE,
bg = "tomato3",
fg = "lightblue",
cex = 1,
line = 1.2,
font = 1,
inner = FALSE
)
4.4 Flèche d’orientation et échelle
La fonction mf_arrow()
permet de choisir la position et l’aspect de la flèche d’orientation.
La fonction mf_scale()
permet de choisir la position et l’aspect de l’échelle.
mf_map(com)
mf_scale(size = 20, lwd = 2, cex = 1.2)
mf_arrow()
4.5 Crédits
La fonction mf_credits()
permet d’afficher une ligne de crédits (sources, auteur…).
mf_map(com)
mf_credits("Auteurs : TG & HP\nSources : IGN, 2018")
4.6 Habillage complet
La fonction mf_layout()
permet d’afficher tous ces éléments (titre, c.
mf_map(com)
mf_layout(
title = "Le Lot",
credits = "Auteurs : TG & HP\nSources : IGN, 2018",
arrow = TRUE,
scale = TRUE
)
4.7 Annotations
# Sélection d'une commune
<- com[com$NOM_COM == "Cahors", ]
cahors mf_map(com)
mf_annotation(
x = cahors,
txt = "Cahors",
halo = TRUE,
cex = 1.5
)
4.8 Étiquettes
La fonction mf_label()
est dédiée à l’affichage d’étiquettes.
# Selection des communes qui intersectent la
# commune de Cahors
<- st_filter(com, com[com$NOM_COM == "Cahors", ])
com_sel mf_map(com_sel)
mf_label(
x = com_sel,
var = "NOM_COM",
col= "black",
halo = TRUE,
overlap = FALSE,
lines = FALSE
)mf_scale()
L’argument halo = TRUE
permet d’afficher un léger halo autour des étiquettes et l’argument overlap = FALSE
permet de créer des étiquettes ne se recouvrant pas.
4.9 Les légendes
La fonction mf_legend()
permet d’afficher des légendes.
mf_map(com)
mf_legend(
type = "prop",
val = c(1000,500,200,10),
inches = .4,
title = "Population",
pos = "topleft"
)mf_legend(
type = "choro",
val = c(0,10,20,30,40),
pal = "Greens",
pos = "bottomright",
val_rnd = 0
)
4.10 Centrer la carte sur une région
La fonction mf_map()
permet d’initialiser une carte en la centrant sur une objet spatial en choisissant un fond et des bordures transparantes.
mf_map(x = com_sel, col = NA, border = NA)
mf_map(com, add = TRUE)
mf_map(com_sel, col = NA, border = "red", lwd = 2, add = TRUE)
4.11 Afficher plusieurs cartes sur la même figure
Il faut ici utiliser l’argument mfrow
de la fonction par()
. Le premier chiffre représente le nombre lignes et le deuxième le nombre de colonnes.
Par exemple par(mfrow = c(1, 2))
(1 ligne et 2 colonnes) permet d’afficher deux cartes côte à côte.
# define the figure layout (1 row, 2 columns)
<- par(mfrow = c(1, 2))
opar # define theme
mf_theme("default", mar = c(0,0,1.2,0), tab = FALSE, pos = "center")
# first map
mf_map(com)
mf_map(com, "TER_F", "prop",
inches = .2,
val_max = 4000,
leg_pos = "topleft",
leg_title = "N.")
mf_title("Tertiaire: Femmes")
# second map
mf_map(com)
mf_map(com, "TER_H", "prop",
inches = .2,
val_max = 4000,
leg_pos = NA)
mf_title("Hommes")
par(opar)
4.12 Export des cartes
mf_export()
permet d’exporter des cartes en PNG ou en SVG.
Le ratio hauteur/largeur de la carte correspondra au ratio hauteur/largeur d’un objet spatial.
Si width
est spécifié alors height
est déduit du ratio hauteur/largeur de x
, de la taille des marges de la figure et des dimensions du titre (du thème utilisé en somme).
mf_export()
peut aussi être utilisé pour ajouter de l’espace sur un ou plusieurs côté de la carte ou encore centrer la carte sur une zone particulière.
#création d'un thème personnel
mf_theme("candy", bg = "grey80")
mf_export(
x = com,
filename = "img/com_default.png",
width = 600
)mf_map(com, add = TRUE)
mf_title("Le Lot")
dev.off()
L’emprise de cette carte est exactement celle de la région affichée.
Lors de l’export suivant nous ajoutons de l’espace sur la partie droite de la carte (50% de la largeur de x
).
mf_export(
x = com,
filename = "img/com_expand.png",
width = 600,
expandBB = c(0, 0, 0, .5)
)mf_map(com, add = TRUE)
mf_title("Le Lot")
dev.off()
4.13 Ajouter une image sur une carte
Cela peut être utile pour ajouter un logo, un pictogramme. La fonction readPNG()
du package png
permet l’ajout d’images sur une figure.
mf_theme("default", mar = c(0,0,0,0))
library(png)
# import de l'image
<- readPNG("img/Logo CG 46 - Bleu.png")
logo # dimension de l'image en unité de la carte
<- dim(logo)[2:1] * 20
pp # Définition d'un point d'encrage de l'image dans la figure, ici
# le coin supérieur gauche de la bounding box du département
<- st_bbox(com)[c(1,4)]
xy mf_map(com, col = "#D1914D", border = "white")
rasterImage(
image = logo,
xleft = xy[1],
ybottom = xy[2] - pp[2],
xright = xy[1] + pp[1],
ytop = xy[2]
)
4.14 Placer précisément un élément sur la carte
Dans plusieurs fonctions de mapsf
il est possible de placer des éléments d’habillage de manière interactive avec la position “interactive”.
4.15 Ajouter un ombrage à une couche
La fonction mf_shadow()
permet de créer une ombre à une couche de polygones.
mf_theme("default")
mf_shadow(com)
mf_map(com, add=TRUE)
4.16 Création de cartons
La fonction mf_inset_on()
permet de démarrer la création d’un carton. Il faut ensuite “refermer” le carton avec mf_inset_off()
.
<- com[com$NOM_COM == "Biars-sur-Cère", ]
biars # affichage de toutes les communes
mf_map(com)
# affichage de la sélection de communes
mf_map(biars, col = "tomato4", border = "tomato1",
lwd = 2, add = TRUE)
# Démarrer le carton
# en haut à gauche sur
# le ratio width/height de biars
# avec une largeur d'1/4 de la largeur de la figure
mf_inset_on(x = biars, pos = "topleft", cex = .25)
# couleur du fond
mf_theme(bg = "#f7f7f7")
# affichage de la commune cible
mf_map(biars, col = "tomato4", border = "tomato1")
# affichage des communes
mf_map(com, col = NA, add = TRUE)
# échelle
mf_scale(size = 1, pos = "bottomright")
# affichage d'un cadre
box()
# Fermer le carton
mf_inset_off()
# Ajouter titre et échelle
mf_title("Biars-sur-Cère")
mf_scale(10, pos = 'bottomright')
Exercice
Importer la couche des communes du département du Lot à partir du fichier geopackage lot.gpkg.
Importer le fichier com.csv.
Ce jeu de données porte sur les communes du lot et contient plusieurs variables supplémentaires:- le nombre d’actifs (ACT).
- le nombre d’actifs dans l’industrie (IND)
- La part des actifs dans la population totale (SACT)
- La part des actifs dans l’industrie dans le total des actifs (SACT_IND)
Joindre le jeu de données et la couche des communes.
Créez une carte représentant la population active travaillant dans l’industrie.
Ajoutez les éléments d’habillage indispensables.
Utilisez un thème personnalisé.
Ajoutez un carton de localisation du Lot.
Exportez la carte au format PNG avec 800 pixels de large.
Comment rendre la carte plus intelligible ? Allez-y !