knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 5, fig.height = 6 )
The aim of mapsf
is to obtain thematic maps with the visual quality of those build with a classical mapping or GIS software.
mapsf
uses sf
objects to produce base
graphics.
mapsf
functions can be classified in the following categories:
Symbology\
mf_map()
is the main function of the package, it displays map layers on a georeferenced plot. Many parameters are available to fine tune the cartographic representations. These parameters are the common ones found in GIS and automatic cartography tools (e.g. classification and color palettes used in choropleth maps, symbols sizes used in proportional symbols maps...).
Map Layout\ Along with the cartographic functions, some other functions are dedicated to layout design (e.g. legends, scale bar, north arrow, title, credits...).
Utility Functions\ A set of functions is dedicated to the creation of spatial objects (e.g. links creation) or other utility tasks (e.g. color palette management, class intervals extraction, sample dataset import...).
mf_map()
has three main arguments:
x
an sf objectvar
the name(s) of a variable(s) to maptype
the map layer typeThe following map types are available:
Additionaly, mf_raster()
can be used to displays raster objects (single/multi band, continuous, classes, intervals).
These functions are dedicated to the map layout design.
| | |
|--------|----------------------|
| ① mf_title()
| Title of the map |
| ② mf_arrow()
| North arrow |
| ③ mf_credits()
| Author, sources... |
| ④ mf_scale()
| Scale bar |
| ⑤ mf_annotation()
| Annotations |
| ⑥ mf_label()
| Labels |
| ⑦ mf_shadow()
| Shadow |
mf_theme()
sets a map theme. A theme is a set of graphical parameters that are applied to maps created with mapsf
. These parameters are the figure margins, background and foreground colors and mf_title()
options. mapsf
offers some builtin themes. It’s possible to modify an existing theme or to start a theme from scratch. Themes are persistent across maps produced by mapsf (e.g. they survive a dev.off()
call).
🔗 See the online vignette: How to use themes
mf_export()
exports maps in PNG or SVG formats.
The exported map width/height ratio will match the one of a spatial object.
If width is specified, then height is deduced from the width/height ratio of x and some theme parameters (figure margins and title size).
If height is specified, then width is deduced from the width/height ratio of x and some theme parameters (figure margins and title size).
🔗 See the online vignette: How to export maps
mf_shadow()
plots the shadow of a polygon layer.
mf_map(x, type = "base")
displays sf
objects geometries.
mf_layout()
add a complete layout to the map (title, credits, north arrow, scale bar). Each layout elements can also be set separately (with mf_title()
, mf_credits()
, mf_arrow()
and mf_scale()
).
library(mapsf) # import the sample data set mtq <- mf_get_mtq() # plot a shadow mf_shadow(mtq) # plot municipalities mf_map(mtq, type = "base", add = TRUE) # layout elements credits <- paste0("Sources: IGN, 2018\n", "mapsf ", packageVersion("mapsf")) mf_title("Martinique") mf_credits(credits) mf_arrow() mf_scale(5)
mf_map(x, var, type = "prop")
displays symbols with areas proportional to a quantitative variable (stocks). The inches
argument is used to customize the symbols sizes.
# plot a shadow mf_shadow(mtq) # plot municipalities mf_map(mtq, add = TRUE) # plot population mf_map( x = mtq, var = "POP", type = "prop", inches = 0.25, col = "brown4", leg_pos = "topright", leg_adj = c(0, -3), leg_title = "Total population" ) # layout elements mf_title("Population Distribution in Martinique") mf_credits(credits) mf_arrow() mf_scale(5)
In choropleth maps, areas are shaded according to the variation of a quantitative variable. They are used to represent ratios or indices.\
mf_map(x, var, type = "choro")
displays choropleth maps . Arguments nbreaks
, and breaks
allow to customize the variable classification. mf_get_breaks()
allows to classify data outside of the function itself. Colors palettes, defined with pal
, can be created with mf_get_pal()
or you can use palette names from hcl.pals()
.
# population density (inhab./km2) using sf::st_area() mtq$POPDENS <- 1e6 * mtq$POP / sf::st_area(mtq) # plot population density mf_map( x = mtq, var = "POPDENS", type = "choro", breaks = "geom", nbreaks = 5, pal = "Teal", border = "white", lwd = 0.5, leg_pos = "bottomleft", leg_adj = c(0, 3), leg_title = "Population Density\n(inh. / km2)" ) # layout elements mf_title("Population Distribution in Martinique") mf_credits(credits) mf_arrow() mf_scale(5)
mf_map(x, var, type = "typo")
displays a typology map of a qualitative variable. val_order
is used to set the modalities order in the legend.
mf_label()
displays labels on the map.
# plot administrative status mf_map( x = mtq, var = "STATUS", type = "typo", pal = c("aquamarine4", "yellow3", "wheat"), lwd = .5, val_order = c( "Prefecture", "Sub-prefecture", "Simple municipality" ), leg_pos = "topright", leg_adj = c(0, 1), leg_title = "" ) # labels for a few municipalities mf_label( x = mtq[mtq$STATUS != "Simple municipality", ], var = "LIBGEO", cex = 0.9, halo = TRUE, r = 0.15 ) # layout elements mf_title("Administrative Status") mf_credits(credits) mf_arrow() mf_scale(5)
mf_map(x, var, type = "prop_choro")
creates a map of symbols that are proportional to values of a first variable and colored to reflect the classification of a second variable.
expandBB
argument in mf_map()
allows to expand the map space. Here, we increase the space available on the right of the map to avoid overlaps between the legends and the map.
# Plot the municipalities and expand the map space on the right mf_map(x = mtq, expandBB = c(0, 0, 0, .15)) # Plot symbols with choropleth coloration mf_map( x = mtq, var = c("POP", "MED"), type = "prop_choro", border = "grey50", lwd = 1, leg_pos = c("topright"), leg_title = c("Population", "Median Income\n(in euros)"), breaks = "equal", nbreaks = 4, pal = "Greens", leg_val_rnd = c(0, -2), leg_frame = FALSE ) # layout elements mf_title("Population & Wealth in Martinique, 2015") mf_credits(credits) mf_arrow() mf_scale(5)
mf_map(x, var, type = "prop_typo")
creates a map of symbols that are proportional to values of a first variable and colored to reflect the modalities of a second qualitative variable.
# plot the municipalities and expand the map space on the right mf_map(x = mtq, expandBB = c(0, 0, 0, .15)) # plot symbols with choropleth coloration mf_map( x = mtq, var = c("POP", "STATUS"), type = "prop_typo", symbol = "square", border = "white", lwd = .5, leg_pos = "topright", leg_title = c("Population", "Administrative\nStatus"), val_order = c( "Prefecture", "Sub-prefecture", "Simple municipality" ) ) # layout elements mf_title("Population Distribution in Martinique") mf_credits(credits) mf_arrow() mf_scale(5)
mf_label()
is dedicated to the display of labels on a map. The overlap = FALSE
argument displays non overlapping labels.
# plot municipalities mf_map(mtq, col = "#e4e9de", border = "darkseagreen4") # plot labels mf_label( x = mtq, var = "LIBGEO", cex = 0.7, font = 4, halo = TRUE, r = 0.1, overlap = FALSE, q = 3, lines = FALSE ) # layout elements mf_title("Municipalities of Martinique") mf_credits(credits) mf_arrow(pos = "topright") mf_scale(5)
mf_get_links()
creates a link layer from an sf
object and a link data.frame
(long format).
mf_map(x, var, type = "grad")
displays graduated links.
# import the csv file embedded in mapsf mob <- read.csv(system.file("csv/mob.csv", package = "mapsf")) # Select links from Fort-de-France (97209)) mob_97209 <- mob[mob$i == 97209, ] # create an sf object of links mob_links <- mf_get_links(x = mtq, df = mob_97209) # Plot the municipalities mf_map(mtq) # plot graduated links mf_map( x = mob_links, var = "fij", type = "grad", breaks = c(100, 500, 1000, 4679.0), lwd = c(1, 4, 8), leg_pos = "topright", leg_title = "Nb. of\nCommuters", leg_val_rnd = 0 ) # layout elements mf_title("Commuting to Fort-de-France") mf_credits(credits) mf_arrow() mf_scale(5)
Several datasets are embedded in the package:
A GeoPackage of Martinique municipalities can be imported with mf_get_mtq()
(or via sf::st_read()
).
A csv file of professional mobility flows between Martinique municipalities.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.