Управление отображением фоновой карты в ggmap для пользовательского набора шейп-файлов

Я работаю с набором данных, соответствующим приведенному ниже отрывку:

# 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()

Полученная графика плохо вписывается в полигоны:

Грязная карта

Я заинтересован в настройке фоновой карты, чтобы она точно соответствовала полигонам. В частности, я хотел бы обрезать/укоротить фон красными линиями, отмеченными на картинке ниже:

Что удалить


person Konrad    schedule 28.10.2015    source источник
comment
Использование coord_map вместо coord_equal уже выглядит лучше, хотя все еще немного не так..   -  person erc    schedule 28.10.2015
comment
@beetroot Большое спасибо за это предложение. Пример мог бы быть более подробным. На практике трудность связана с правильной установкой коэффициента масштабирования, чтобы он соответствовал пользовательскому набору шейп-файлов. В моем реальном наборе данных некоторые фигуры вытянуты за пределы фоновой карты. Выбор более низкого коэффициента масштабирования исправляет это, но делает карту менее презентабельной. Я ищу решение, в котором я мог бы просто получить большую фоновую карту (т.е. два квадрата рядом друг с другом), которая соответствовала бы имеющимся формам.   -  person Konrad    schedule 28.10.2015


Ответы (1)