## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 7, fig.height = 5 ) ## ----setup-------------------------------------------------------------------- library(DonutMap) library(ggplot2) library(sf) set.seed(20260522) ## ----data--------------------------------------------------------------------- sites <- data.frame( site = c("Site A", "Site B", "Site C", "Site D", "Site E"), lon = c(-73.57, -71.21, -72.75, -68.52, -66.82), lat = c(45.50, 46.81, 45.40, 48.45, 50.22) ) categories <- c("Walking", "Transit", "Car") demo <- merge( sites, data.frame(category = categories), by = NULL ) demo$value <- c( 32, 48, 120, 55, 80, 95, 28, 70, 110, 20, 44, 76, 18, 30, 58 ) demo$category <- factor(demo$category, levels = categories) flows <- data.frame( from = c( "Site A", "Site A", "Site B", "Site B", "Site C", "Site C", "Site D", "Site E" ), to = c( "Site B", "Site C", "Site D", "Site A", "Site E", "Site B", "Site E", "Site C" ), trips = c(180, 90, 120, 75, 70, 55, 60, 45), flow_category = c( "Transit", "Car", "Walking", "Transit", "Car", "Walking", "Walking", "Transit" ) ) category_colours <- c( Walking = "#1b9e77", Transit = "#7570b3", Car = "#d95f02" ) ## ----map-data----------------------------------------------------------------- canada <- rnaturalearth::ne_countries( country = "Canada", returnclass = "sf" ) eastern_canada <- sf::st_crop( canada, sf::st_bbox( c(xmin = -81, ymin = 44, xmax = -62, ymax = 53.5), crs = sf::st_crs(4326) ) ) ## ----static-map--------------------------------------------------------------- donut_map( demo, site, category, value, lon = lon, lat = lat, map = eastern_canada, crs = 3347, radius_range = c(25000, 70000), colours = category_colours, flows = flows, from = from, to = to, flow_value = trips, flow_group = flow_category, flow_colours = category_colours, flow_linewidth_range = c(0.3, 2.2), flow_curvature = 0.22, flow_arrow = TRUE ) + labs( title = "Simulated mobility composition by site", fill = "Mode", linewidth = "Trips" ) + theme(legend.position = "right") ## ----interactive-map---------------------------------------------------------- donut_leaflet( demo, site, category, value, lon = lon, lat = lat, map = eastern_canada, radius_range = c(25000, 70000), n = 160, colours = category_colours, flows = flows, from = from, to = to, flow_value = trips, flow_group = flow_category, flow_colours = category_colours, flow_weight_range = c(1, 7), flow_curvature = 0.22, flow_arrow = TRUE, flow_arrow_size = 45000, flow_opacity = 0.75 ) ## ----trajectory-layer--------------------------------------------------------- trajectories <- flow_lines( flows, demo, from, to, trips, site, group = flow_category, lon = lon, lat = lat, crs = 3347, flow_curvature = 0.22, flow_n = 40 ) trajectories ## ----sf-layer----------------------------------------------------------------- donuts <- donut_polygons( demo, site, category, value, lon = lon, lat = lat, crs = 3347, radius_range = c(25000, 70000) ) donuts ## ----sf-plot------------------------------------------------------------------ plot(donuts["category"])