Есть ли способ добавить пространство между двумя областями карты, используя ggplot в R? - PullRequest
0 голосов
/ 27 июня 2019

Я борюсь с проблемой.Я хотел бы разделить две страны, добавив некоторое пространство между ними.Идея, например, состоит в том, чтобы взорвать Европу, по-прежнему показывая каждую страну, но с предварительно определенным пространством между каждой страной.

Я использую R и ggplot для проекта, над которым я работаю, и до сих пор пыталсяискать какой-то ответ в Интернете, но ничего не смог найти.Вы можете получить что-то, изменив размер, но это решение также приведет к потере деталей карты.

Если бы вы могли помочь, это было бы очень здорово!

1 Ответ

0 голосов
/ 27 июня 2019

Немного странно, но вы можете попытаться масштабировать полигоны до <100% оригиналов ... </p>

library(sf)
library(magrittr)

пример данных

#read shapefile with country polygons
# source: http://thematicmapping.org/downloads/TM_WORLD_BORDERS-0.3.zip
map <- st_read( "./data/countries/TM_WORLD_BORDERS-0.3.shp" )
#filter out some relevant countries
benelux <- c("Belgium", "Luxembourg", "Netherlands")
map <- map %>% filter( NAME %in% benelux ) 

#what do we have?
ggplot() + geom_sf( data = map ) 

enter image description here

код

#scale the polygons to 75% of original
#extract geometry
map.sfc = st_geometry(map)
#get centroids
map.centroid = st_centroid(map.sfc)
#recalculate geometry, scale to 75%
map.scale = ( map.sfc - map.centroid ) * 0.75 + map.centroid
#replace original geoemtry by recalculated geometry. set crs back to WGS84
map.scale_sf = st_set_geometry(map, map.scale) %>% st_set_crs( 4326 )

#ewhat do we have now?
ggplot() + geom_sf( data = map.scale_sf ) 

enter image description here

...