Я работаю с набором данных, соответствующим приведенному ниже отрывку:
# Data sourcing -----------------------------------------------------------
# Download an read US state shapefiles
tmp_shps <- tempfile(); tmp_dir <- tempdir()
download.file("http://www2.census.gov/geo/tiger/GENZ2014/shp/cb_2014_us_state_20m.zip",
tmp_shps)
unzip(tmp_shps, exdir = tmp_dir)
# Libs
require(rgdal); require(ggplot2)
# Read
us_shps <- readOGR(dsn = tmp_dir, layer = "cb_2014_us_state_20m")
# Prepare data set for ggplot2
us_shps_frt <- fortify(us_shps, region = "NAME")
Из этого набора данных я подмножаю пользовательский выбор шейп-файлов, как в примере ниже:
map_shps <- ggplot(data = us_shps_frt[grep("South", us_shps_frt$id),]) +
geom_polygon(aes(x = long, y = lat, group = group,
fill = id)) +
coord_equal() +
ggtitle("Odd Map") +
theme_map()
Учитывая странный выбор шейп-файлов выше, я хотел бы подобрать фоновую карту, которая аккуратно накладывалась бы на максимальное количество полигонов. Первоначально я пытался добиться этого следующим образом:
# Get box for the map
bbox <- make_bbox(lon = long, lat = lat,
data = us_shps_frt[grep("South", us_shps_frt$id),],
f = 0.5)
map_backgr <- get_map(bbox, maptype = "roadmap", zoom = 5,
source = "google", scale = 2, messaging = TRUE)
map_backgr <- ggmap(map_backgr, extent = "normal", maprange = FALSE)
а затем сгенерировать карту:
map_backgr +
geom_polygon(data = us_shps_frt[grep("South", us_shps_frt$id),],
aes(x = long, y = lat, group = group,
fill = id)) +
coord_equal() +
ggtitle("Odd Map with Background") +
theme_map()
Полученная графика плохо вписывается в полигоны:
Я заинтересован в настройке фоновой карты, чтобы она точно соответствовала полигонам. В частности, я хотел бы обрезать/укоротить фон красными линиями, отмеченными на картинке ниже:
coord_map
вместоcoord_equal
уже выглядит лучше, хотя все еще немного не так.. - person erc   schedule 28.10.2015