在R中绘制地图-仅显示外部边界 [英] Plot a map in R - show only external borders

查看:83
本文介绍了在R中绘制地图-仅显示外部边界的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的问题是关于以色列地图,但我想问一下存在于地图库中的美国数据的问题,以使其变得更容易.我想应该可以.

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

 库(ggplot2)图书馆(地图)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)国家的外部边界;(二)各地区的对外边界;(3)每个州的外部边界.

谢谢!艾伦

解决方案

或者,使用适当的shapefile:

 库(rgdal)库(ggplot2)如果(!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",列表= 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" 

My problem is with an Israel map, but I'd ask the question with US data which exists in the maps library to make it easier. I guess it should work.

I know how to control the borders of a map both on the basic plot and in ggplot. I can draw it with or without plots. However, I would like sometimes to draw only the external borders of the map, and not the borders across states (like in the drawing below).

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)  

Another question which is a bit more complex:

Let's now imagine I have a way to group specific states to 'regions'. Let's imagine we apply a category of 'south' and 'north' to every state. Then I would like to differentiate and be able to control 3 different type of borders - (1) the external border of the country; (2) the external border of every region; (3) the external border of each state.

Thanks! Alan

解决方案

Or, use a proper shapefile:

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, their admin layer 2 is the outline.

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

这篇关于在R中绘制地图-仅显示外部边界的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆