library(leaflet)
m<-leaflet()
m<-addTiles(m)
print(m)Cartographie sous R
Cartographie avec R : Cartes statiques et
dynamiques de une ou plusieurs variables avec R.
Introduction
Un beau graphique vaut mieux qu’un long discours
Carte avec contours : le format shapefileHeading
Nous allons maintenant utiliser des fonds de cartes de type « shapefile »2 qui ne font figurer que les contours (donc des polygones), par exemple ceux des dé partements français. Ces fonds de cartes permettent de représenter une variable quantitative ou qualitative en coloriant à l’intérieur des contours.
En guise d’exemple, nous analysons graphiquement les différences de taux de chô mage par département en France
library(readr)
taux_chomage <- read_delim(
"https://husson.github.io/livre_StatR/tauxchomage.csv",
delim = ";"
)Rows: 96 Columns: 5
── Column specification ────────────────────────────────────────────────────────
Delimiter: ";"
chr (2): CODE_DEPT, NOM_DPT
dbl (3): TCHOMB1T01, TCHOMB1T06, TCHOMB1T11
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Pour le fond de carte, nous nous servons de la carte GEOFLAR ⃝ proposée par l’Institut Géographique National et du package “sf”
library(sf)Linking to GEOS 3.14.1, GDAL 3.12.1, PROJ 9.7.1; sf_use_s2() is TRUE
library(tidyverse)── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ forcats 1.0.1 ✔ purrr 1.2.2
✔ ggplot2 4.0.3 ✔ stringr 1.6.0
✔ lubridate 1.9.5 ✔ tibble 3.3.1
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# 1. Créer un dossier data s'il n'existe pas
dir.create("data", showWarnings = FALSE)
# 2. Télécharger le fond de carte des départements
download.file(
url = "https://lrouviere.github.io/VISU/dpt.zip",
destfile = "data/dpt.zip",
mode = "wb"
)
# 3. Décompresser le fichier
unzip("data/dpt.zip", exdir = "data/dpt")
# 4. Importer le shapefile avec sf
dpt <- read_sf("data/dpt")
# 5. Afficher la carte
ggplot(dpt) +
geom_sf() +
theme_minimal()L’importation via read_sf prend directement en compte le système de coordonnées utilisé par l’IGN
Si nous souhaitons analyser les taux de chômage par département et les représenter sur la carte, nous devons fusionner le tibble chomage (qui contient les deux taux de chômage par département) avec les données de dpt (qui contiennent la carte). Pour s’assurer que la fusion est faite par département, nous effectuons une jointure
dpt2 <- inner_join(dpt,taux_chomage,by="CODE_DEPT")
dpt2Simple feature collection with 96 features and 15 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 99226 ymin: 6049647 xmax: 1242375 ymax: 7110524
Projected CRS: RGF93 Lambert 93
# A tibble: 96 × 16
ID_GEOFLA CODE_DEPT NOM_DEPT CODE_CHF NOM_CHF X_CHF_LIEU Y_CHF_LIEU
<dbl> <chr> <chr> <chr> <chr> <int> <int>
1 1 01 AIN 053 BOURG-… 8717 65696
2 2 02 AISNE 408 LAON 7451 69406
3 3 03 ALLIER 190 MOULINS 7254 66072
4 4 04 ALPES-DE-HAUTE-PR… 070 DIGNE-… 9590 63379
5 5 05 HAUTES-ALPES 061 GAP 9443 63891
6 6 06 ALPES-MARITIMES 088 NICE 10439 62985
7 7 07 ARDECHE 186 PRIVAS 8266 64052
8 8 08 ARDENNES 105 CHARLE… 8239 69649
9 9 09 ARIEGE 122 FOIX 5862 62083
10 10 10 AUBE 387 TROYES 7799 68003
# ℹ 86 more rows
# ℹ 9 more variables: X_CENTROID <int>, Y_CENTROID <int>, CODE_REG <chr>,
# NOM_REGION <chr>, geometry <MULTIPOLYGON [m]>, NOM_DPT <chr>,
# TCHOMB1T01 <dbl>, TCHOMB1T06 <dbl>, TCHOMB1T11 <dbl>
Enfin, pour utiliser le formalisme de ggplot2, il faut utiliser un jeu de données avec deux colonnes : l’une donnant l’année et l’autre le taux de chômage de l’année. Cette remise en forme est obtenue grâce à la fonction gather du package tidyr
library(tidyr)
dpt3<-dpt2%>% select(A2006=TCHOMB1T06,A2011=TCHOMB1T11,geometry)%>%
gather("Annee","TxChomage",-geometry)
class(dpt3)[1] "sf" "tbl_df" "tbl" "data.frame"
La représentationdes taux de chômage par département d’une ou de plusieurs années peut alors être obtenue grâce aux fonctions du packageggplot2
library(ggplot2)
ggplot()+ geom_sf(data=dpt3, aes(fill=TxChomage))+
facet_wrap(~Annee,nrow=1)+
scale_fill_gradient(low="white",high="brown")+theme_bw()library(rnaturalearth)
library(rnaturalearthdata)
Attachement du package : 'rnaturalearthdata'
L'objet suivant est masqué depuis 'package:rnaturalearth':
countries110
cameroun <- ne_states(country = "Cameroon", returnclass = "sf")
plot(st_geometry(cameroun))