Restart 8: Faire des cartes sous R avec tmap

Lise Vaudor

21/09/2020

Un choix de packages très (trop) large!

Cartes statiques:

  • ggplot/ggmap (cartes simples, compatibles tidyverse)
  • cartography (cartes élaborées, cartographe-compatibles)
  • tmap

Cartes dynamiques:

  • leaflet
  • mapview
  • tmap

A partir d’un tableau de données: passage vers classe sf

Si l’on dispose de coordonnées pour chaque individu : transformation en objet sf de type MULTIPOINT

path_data="http://perso.ens-lyon.fr/lise.vaudor/datasets/"
lyon_equipements=read_csv(paste0(path_data,
                                 "lyon_equipements.csv")) %>% 
  st_as_sf(coords=c("lon","lat"), crs=4326)

lyon_marches=lyon_equipements %>% filter(type=="marché")

Si l’on dispose de données spatiales (type shapefile)

arrondissements=st_read(paste0(path_data,
                               "arrondissements.gpkg")) %>% 
  st_set_crs(4326)
Reading layer `arrondissements' from data source 
  `http://perso.ens-lyon.fr/lise.vaudor/datasets/arrondissements.gpkg' 
  using driver `GPKG'
Simple feature collection with 9 features and 6 fields
Geometry type: POLYGON
Dimension:     XY
Bounding box:  xmin: 4.771796 ymin: 45.70737 xmax: 4.898374 ymax: 45.80829
Geodetic CRS:  WGS 84

Statique ou dynamique

tmap_mode("plot")
tm_shape(lyon_marches)+
  tm_dots()

tmap_mode("view")
tm_shape(lyon_marches)+
  tm_dots()

Basemaps

  • Possibilité de ne pas utiliser de basemap (par défaut)
  • Possibilité d’utiliser le raster de votre choix comme basemap
  • Possibilité d’utiliser des “basemap services”

Par défaut, utilisation de la basemap Esri.WorldGrayCanvas:

tmap_mode("view")
tm_shape(lyon_marches)+
  tm_dots(size=0.5)

Basemap services

Pour ne pas afficher de basemap en mode View:

tm_basemap(NULL)+
tm_shape(lyon_marches)+
  tm_dots()

Pour changer de basemap service

tm_basemap(leaflet::providers$Stamen.Watercolor)+
tm_shape(lyon_marches)+
  tm_dots(size=0.5)
Un aperçu des possibilités ici

Layers: tm_shape() + tm_…()

  • tm_shape(): la base de toute layer: on y indique le jeu de données utilisé
  • tm_xxx() permet de rajouter les couches de symboles. Ici pour des points, tm_dots semble tout indiqué:
tm_shape(lyon_marches)+
  tm_dots()

On peut évidemment paramétrer les couches de symboles:

tm_shape(lyon_marches)+
  tm_dots(size=0.5)

Layers “de base”

  • tm_polygons()/tm_fill()/tm_borders() pour des polygones
  • tm_symbols()/tm_dots()/tm_squares()/tm_bubbles()/tm_markers() pour des points
  • tm_lines()/(tm_iso()) pour des lignes
  • tm_raster()/tm_rgb() pour des rasters
  • tm_basemap()/tm_tiles() pour les basemaps
  • tm_text() pour du texte
tm_shape(lyon_marches)+
  tm_squares(size=0.5)+
  tm_shape(arrondissements)+
  tm_borders(lwd=3, col="red")

“Esthétiques”

Un peu comme avec ggplot, on peut relier directement une propriété graphique à un attribut des individus… La syntaxe, en revanche, n’est pas la même:

On n’écrit pas

mapping=aes(color=nom_attribut)

mais juste col="nom_attribut".

tm_shape(lyon_marches)+
  tm_dots(col="categorie", size=1)

Facettes

On peut également créer des facettes d’une même carte à l’aide de tm_facets() (équivalent de ggplot2::facet_wrap())

tm_shape(lyon_marches)+
  tm_facets(by="categorie")+
  tm_dots() 

Détails de la carte

  • tm_scale_bar()
  • tm_grid()
  • tm_compass()
  • tm_credits()
  • tm_logo()
  • tm_xlab()
  • tm_ylab()
  • tm_minimap() (view mode)
tm_shape(lyon_marches)+
  tm_squares(size=0.5, col="olivedrab4")+
  tm_scale_bar(position=c("right","top"))+
  tm_compass()+
  tm_credits("created with tmap")

Layout de la carte

  • tm_legend()
  • tm_layout()
  • tm_view() (options pour mode view)
  • tm_style()
  • tm_format()
tm_shape(lyon_marches)+
  tm_squares(size=0.5, col="categorie")+
  tm_legend(position=c("right","top"), bg.color="grey95")+
  tm_layout(main.title="Où faire son marché à Lyon?",
            main.title.color="slateblue")

On récapitule!

On a parlé de quoi, déjà?
On a parlé de quoi, déjà?
  • Modes view ou plot
  • basemaps
  • layers : tm_shape + tm_…()
  • Construction des cartes: esthétiques, facettes
  • Paramétrage fin: détails et layout