Skip to contents

Mapview

Mapview is an excellent R package for interactive maps. Although the packages have a lot in common, the focus is different:

  • tmap focusses on thematic mapping with a syntax that is based on the grammar of graphics and is therefore popular for education purposes;
  • mapview focuses on fast exploration of spatial data and has more interactive features.

Modes / platforms

  • tmap offers two modes: “plot” and “view” (but is extendable, see https://github.com/r-tmap/tmap.deckgl).
  • mapview supports three modes, which they call platforms: “leaflet”, “leafgl”, and “mapdeck”.

tmap “view” (with tm_view(use_WebGL = FALSE)) is similar to mapview “leaflet” tmap “view” (with tm_view(use_WebGL = TRUE)) is similar to mapview “leafgl”

tmap does not offer a mode using Mapbox yet.

Default maps

This is the default output of mapview:

This is the default output of tmap:

tmap_mode("view")
#>  tmap modes "plot" - "view"
#>  toggle with `tmap::ttm()`
qtm(World) # qtm stands for 'quick thematic map'
#> <====================  lty ===============>
#>   [1] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [10] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [19] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [28] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [37] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [46] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [55] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [64] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [73] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [82] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [91] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [100] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [109] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [118] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [127] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [136] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [145] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [154] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [163] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [172] "solid" "solid" "solid" "solid" "solid" "solid"
#> <====================  lwd ===============>
#>   [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#>  [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#>  [75] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#> [112] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#> [149] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#> </============================================>

Choropleth

mapview(World, zcol = "HPI")
tm_shape(World) +
  tm_polygons(fill = "HPI")
#> <====================  lty ===============>
#> [1] "solid"
#> <====================  lwd ===============>
#> [1] 1
#> </============================================>
#> <====================  lty ===============>
#>   [1] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [10] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [19] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [28] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [37] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [46] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [55] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [64] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [73] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [82] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [91] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [100] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [109] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [118] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [127] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [136] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [145] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [154] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [163] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [172] "solid" "solid" "solid" "solid" "solid" "solid"
#> <====================  lwd ===============>
#>   [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#>  [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#>  [75] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#> [112] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#> [149] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#> </============================================>

Mimicking mapview layout

We can use tmap to match the style of mapview:

tm_shape(World) +
  tm_polygons(
    fill = "HPI",
    fill_alpha = 0.6,
    col_alpha = 0.9,
    fill.legend = tm_legend(
      title = "World - HPI",
      position = c("right", "top"), 
      fill_alpha = 1),
    fill.scale = tm_scale_continuous(values = "viridis", n = 7, value.na = "#BEBEBE")
  ) + 
tm_basemap(c("CartoDB.Positron", "CartoDB.DarkMatter", 
  "OpenStreetMap", "Esri.WorldImagery", "OpenTopoMap"))
#> <====================  lty ===============>
#> [1] "solid"
#> <====================  lwd ===============>
#> [1] 1
#> </============================================>
#> <====================  lty ===============>
#>   [1] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [10] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [19] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [28] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [37] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [46] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [55] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [64] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [73] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [82] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#>  [91] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [100] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [109] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [118] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [127] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [136] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [145] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [154] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [163] "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid" "solid"
#> [172] "solid" "solid" "solid" "solid" "solid" "solid"
#> <====================  lwd ===============>
#>   [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#>  [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#>  [75] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#> [112] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#> [149] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#> </============================================>
#> Warning: tm_scale_intervals `label.style = "continuous"` implementation in view mode
#> work in progress