# Lesson 2 Interactive Maps

## 2.1 Overview

Questions

• How do you generate interactive plots of spatial data to enable pan, zoom and hover/click for more detail?

Objectives

Learn variety of methods for producing interactive spatial output using libraries:

• plotly: makes any ggplot2 object interactive
• mapview: quick view of any spatial object
• leaflet: full control over interactive map

## 2.2 Things You’ll Need to Complete this Tutorial

R Skill Level: Intermediate - you’ve got basics of R down.

We will continue to use the sf and raster packages and introduce the plotly, mapview, and leaflet packages in this tutorial.

library(tidyverse)  # loads dplyr, tidyr, ggplot2 packages
library(sf)         # simple features package - vector
library(raster)     # raster
library(plotly)     # makes ggplot objects interactive
library(mapview)    # quick interactive viewing of spatial objects
library(leaflet)    # interactive maps

# set working directory to data folder
# setwd("pathToDirHere")

## 2.3 States: ggplot2

Recreate the ggplot object from Lesson 1 and save into a variable for subsequent use with the plotly package.

st_zm() %>%
mutate(
water_km2 = (AWATER / (1000*1000)) %>% round(2))

# plot, ggplot
g = ggplot(states) +
geom_sf(aes(fill = water_km2)) +
scale_fill_distiller("water_km2", palette = "Spectral") +
ggtitle("Water (km2) by State")
g

## 2.4 States: plotly

The plotly::ggplotly() function outputs a ggplot into an interactive window capable of pan, zoom and identify.

library(plotly)

ggplotly(g)

## 2.5 States: mapview

The mapview::mapview() function can work for a quick view of the data, providing choropleths, background maps and attribute popups. Performance varies on the object and customization can be tricky.

library(mapview)

# simple view with popups
mapview(states)
# coloring and layering
mapview(states, zcol='water_km2', burst='STUSPS')