Learn R Programming

⚠️There's a newer version (4.0.0) 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

217,476

Version

2.6.1

License

GPL-2

Issues

Pull Requests

Stars

Forks

Maintainer

Last Published

January 23rd, 2016

Functions in ggmap (2.6.1)

XY2LonLat

Convert a tile coordinate to a lon/lat coordinate
inset

Add ggplot2 insets to a map
hadley

Highly unofficial ggplot2 image
OSM_scale_lookup

Look up OpenStreetMap scale for a given zoom level.
LonLat2XY

Convert a lon/lat coordinate to a tile coordinate
theme_inset

Make a ggplot2 inset theme.
print.ggmap

Print a map
get_openstreetmap

Get an OpenStreetMap
route

Grab a route from Google
geocode

Geocode
ggmapplot

Don't use this function, use ggmap.
legs2route

Convert a leg-structured route to a route-structured route
mapdist

Compute map distances using Google
calc_zoom

Calculate a zoom given a bounding box
revgeocode

Reverse geocode
theme_nothing

Make a blank ggplot2 theme.
get_map

Grab a map.
get_googlemap

Get a Google Map.
ggimage

Plot an image using ggplot2
qmplot

Quick map plot
inset_raster

Create a (ggplot2) raster layer
bb2bbox

Convert a bb specification to a bbox specification
qmap

Quick map plot
get_stamenmap

Get a Stamen Map
gglocator

Locator for ggplots.
wind

Wind data from Hurricane Ike
file_drawer

Manage the ggmap file drawer.
crime

Crime data
get_cloudmademap

Get a CloudMade map.
make_bbox

Compute a bounding box
mutate_geocode

Geocode a dataset
get_navermap

Get a Naver Map
distQueryCheck

Check Google Maps Distance Matrix API query limit
geom_leg

Single line segments with rounded ends
ggmap

Plot a ggmap object
routeQueryCheck

Check Google Maps Directions API query limit
zips

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