knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
library(victor) library(tidyverse) library(sf)
You will need a Mapbox Access Token to use their API. Once you have a token add a line to your .Renviron file
MAPBOX_API_KEY=your_acess_token
The easiest way to edit .Renviron is with the usethis pavkage usethis::edit_r_environ()
. You will have to restart R after editing the file for the token to be available.
Use the spoils function to retrieve a tile for a given location and zoom
It returns a list of simple features data frames. One for each layer of data provided by mapbox.
melburn <- spoils(zoom = 7, longitude = 144.8430, latitude = -37.7311) roads <- filter(melburn$road,!st_is(geometry, "POINT")) road_shields <- filter(melburn$road, st_is(geometry, "POINT"), str_starts(ref, "M") ) %>% group_by(ref) %>% filter(row_number() == 1) places <- filter(melburn$place_label, symbolrank < 11) %>% mutate(name = case_when(name == "Melbourne" ~ "Melburn", TRUE ~ as.character(name))) ggplot() + geom_sf(data = melburn$water, fill = "lightblue") + geom_sf(aes(colour = class), data = roads) + geom_sf_label(aes(label = ref), data = road_shields) + geom_sf_label(aes(label = name, size = symbolrank), data = places) + scale_size(trans = "reverse", range = c(4,6)) + theme_void() + theme( panel.grid.major = element_line(size = 0), plot.background = element_rect(fill = "antiquewhite"), legend.position = "none")
Melburn CBD , zoomed in
cbd <- spoils(zoom = 15, long = 144.958869, lat =-37.820318) ggplot() + geom_sf(data = cbd$water, fill = "lightblue") + geom_sf(data = cbd$building, aes(fill = type )) + geom_sf(data = cbd$road) + geom_sf_label(data = cbd$natural_label, aes (label = name), alpha = 0.4, nudge_x = 0.002) + geom_sf_label(data = filter(cbd$poi_label, category_en == "Aquarium"), aes(label = name), alpha = 0.4) + theme_void() + theme( panel.grid.major = element_line(size = 0), plot.background = element_rect(fill = "antiquewhite1"))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.