2017-09-06 74 views
2

我的问题是以色列地图,但我会问地图库中存在的美国数据,以便使它更容易。我想它应该工作。在R中绘制地图 - 只显示外部边界

我知道如何在基本图和ggplot中控制图的边界。我可以绘制它有或没有情节。但是,我有时只想绘制地图的外部边界,而不是绘制各州之间的边界(如下图所示)。

library(ggplot2) 
library(maps) 
all_states <- map_data("state") 
ggplot(all_states, aes(x=long, y=lat, group=group, fill = region)) + 
geom_polygon(color = "black", size = 1) + coord_equal(ratio=1) 

另一个问题是一个复杂一点:

现在让我们来想象我有办法将特定国家“地区”。假设我们将“南”和“北”的类别应用于每个州。 然后,我想区分并能够控制3种不同类型的边界 - (1)国家的外部边界; (2)各地区的外部边界; (3)各州的外部边界。

谢谢! 艾伦

+0

会为你我解决了类似的问题[这里](https://stackoverflow.com/a/45931429/8449629)的工作? –

+0

@ Z.Lin的解决方案就是要走的路。您需要将多边形(状态)合并为一个所需的单位。实质上你需要第二个边界,我知道没有办法在飞行中这样做。 –

+0

Thanks @ Z.Lin,我想过一个类似的解决方案和解决方法,这很有道理! :) – alanarazi7

回答

0

随着美国很容易

library(ggplot2) 
library(maps) 
border <- map_data("usa") 

边界是数据帧,所以你可以操纵它例如:

border %>% mutate(part = ifelse(region == "main", "south", "north")) 

然后你就可以绘制

all_states <- map_data("state") 
    ggplot(all_states, aes(x=long, y=lat, group=group, fill = region)) + 
     geom_polygon(color = "red", size = 5, data = border) + coord_equal(ratio=1) + 
     geom_polygon(size = 1) + coord_equal(ratio=1) 

,或者你可以绘制任何你想要的东西

但是我怀疑地图包中有关于以色列地区的信息。您需要下载包含有关以色列边界信息的形状文件。这里有http://www.gadm.org/country(Rspatial多边形)。您将谷歌退出,你可以与他们

3

做什么或者,使用适当的shape文件:

library(rgdal) 
library(ggplot2) 

if (!file.exists("israel_geojson.tgz")) download.file("https://s3.amazonaws.com/osm-polygons.mapzen.com/israel_geojson.tgz", "israel_geojson.tgz") 

(untar("israel_geojson.tgz", list = TRUE)) 
## [1] "./israel/"       "./israel/admin_level_2.geojson"  
## [3] "./israel/admin_level_other.geojson" "./israel/admin_level_95.geojson" 
## [5] "./israel/admin_level_11.geojson" "./israel/admin_level_94.geojson" 
## [7] "./israel/admin_level_5.geojson"  "./israel/regions.geojson"   
## [9] "./israel/admin_level_1.geojson"  "./israel/admin_level_12.geojson" 
## [11] "./israel/admin_level_3.geojson"  "./israel/admin_level_7.geojson"  
## [13] "./israel/admin_level_0.geojson"  "./israel/admin_level_13.geojson" 
## [15] "./israel/admin_level_10.geojson" "./israel/admin_level_6.geojson"  
## [17] "./israel/admin_level_15.geojson" "./israel/admin_level_4.geojson"  
## [19] "./israel/admin_level_9.geojson"  "./israel/admin_level_8.geojson"  

According to Mapzen,其管理层2的轮廓。

israel <- readOGR("./israel/admin_level_2.geojson") 
israel_map <- fortify(israel) 

ggplot() + 
    geom_map(data=israel_map, map=israel_map, aes(long, lat, map_id=id), 
      color="#2b2b2b", fill="white") + 
    ggalt::coord_proj("+proj=aeqd +lat_0=31.471357089512118 +lon_0=35.189208984375") + 
    ggthemes::theme_map() 

enter image description here