Learn R Programming

⚠️There's a newer version (4.0.1) of this package.Take me there.

ggmap

ggmap makes it easy to retrieve raster map tiles from popular online mapping services like Google Maps, OpenStreetMap, Stamen Maps, and plot them using the ggplot2 framework:

library(ggmap)

us <- c(left = -125, bottom = 25.75, right = -67, top = 49)
map <- get_stamenmap(us, zoom = 5, maptype = "toner-lite")
ggmap(map)

ggmap(map, extent = "device")

Use qmplot() in the same way you'd use qplot(), but with a map automatically added in the background:

downtown <- subset(crime,
  -95.39681 <= lon & lon <= -95.34188 &
   29.73631 <= lat & lat <=  29.78400
)

qmplot(lon, lat, data = downtown, maptype = "toner-background", color = I("red"))

qmplot(lon, lat, data = downtown, maptype = "toner-lite", geom = "density2d", color = I("red"))

Since ggmap's built on top of ggplot2, all your usual ggplot2 stuff (geoms, polishing, etc.) will work, and there are some unique graphing perks ggmap brings to the table, too.

robberies <- subset(downtown, offense == "robbery")

qmplot(lon, lat, data = downtown, geom = "blank", zoom = 15, maptype = "toner-background", darken = .7) +
  stat_density_2d(aes(fill = ..level..), geom = "polygon", alpha = .3, color = NA) +
  scale_fill_gradient2("Robbery\nPropensity", low = "white", mid = "yellow", high = "red", midpoint = 1500)

Faceting works, too:

qmplot(lon, lat, data = downtown, maptype = "toner-background", color = offense) + 
  facet_wrap(~ offense)

For convenience, here's a map of Europe:

europe <- c(left = -12, bottom = 35, right = 30, top = 63)
map <- get_stamenmap(europe, zoom = 5, maptype = "toner-lite")
ggmap(map)

Installation

  • From CRAN: install.packages("ggmap")

  • From Github: devtools::install_github("dkahle/ggmap")

Copy Link

Version

Install

install.packages('ggmap')

Monthly Downloads

30,446

Version

2.6.2

License

GPL-2

Issues

Pull Requests

Stars

Forks

Maintainer

David Kahle

Last Published

January 23rd, 2019

Functions in ggmap (2.6.2)

calc_zoom

Calculate a zoom given a bounding box
get_stamenmap

Get a Stamen Map
make_bbox

Compute a bounding box
XY2LonLat

Convert a tile coordinate to a lon/lat coordinate
geocode

Geocode
geom_leg

Single line segments with rounded ends
mapdist

Compute map distances using Google
bb2bbox

Convert a bb specification to a bbox specification
ggimage

Plot an image using ggplot2
mutate_geocode

Geocode a dataset
get_map

Grab a map.
LonLat2XY

Convert a lon/lat coordinate to a tile coordinate
get_cloudmademap

Get a CloudMade map.
get_googlemap

Get a Google Map.
OSM_scale_lookup

Look up OpenStreetMap scale for a given zoom level.
distQueryCheck

Check Google Maps Distance Matrix API query limit
gglocator

Locator for ggplots.
file_drawer

Manage the ggmap file drawer.
get_navermap

Get a Naver Map
revgeocode

Reverse geocode
inset

Add ggplot2 insets to a map
hadley

Highly unofficial ggplot2 image
print.ggmap

Print a map
ggmap

Plot a ggmap object
route

Grab a route from Google
theme_nothing

Make a blank ggplot2 theme.
qmap

Quick map plot
routeQueryCheck

Check Google Maps Directions API query limit
wind

Wind data from Hurricane Ike
theme_inset

Make a ggplot2 inset theme.
zips

Zip code data for the Greater Houston Metropolitan Area from the 2000 census
qmplot

Quick map plot
ggmapplot

Don't use this function, use ggmap.
inset_raster

Create a (ggplot2) raster layer
legs2route

Convert a leg-structured route to a route-structured route
crime

Crime data
get_openstreetmap

Get an OpenStreetMap