knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
library(victor)
library(tidyverse)
library(sf)

Mapbox Token

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.

Get some tiles and plot

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")) 


adam-gruer/victor documentation built on Nov. 10, 2019, 6:20 p.m.