在ggplot / ggmap中省略一些边框

时间:2013-03-28 08:31:44

标签: r ggplot2 ggmap

我是R的新手,我正在玩一个项目来预测2010年到2020年阿拉巴马州的人口增长预测。这是我的代码:

dat <- read.table("C:/Users/rasmus/Documents/countyinfo.txt", sep="\t", header=TRUE)

library(ggplot2)
library(maps)
library(ggmap)

mdat <- map_data('county')
str(mdat)
al1 = get_map(location = c(lon = -86.304474, lat = 32.362563), 
              zoom = 7, maptype = 'roadmap')
al1MAP = ggmap(al1) + 
         geom_point(data=dat,inherit.aes = FALSE, 
                    aes(y=Lat, x=Lon, map_id=County, size=Growth), col="red") + 
         borders("state", colour="red", alpha=0.8) + 
         borders("county", colour="blue", alpha=0.5)
al1MAP

现在,我有两个问题。

1)国家边界似乎做了奇怪的事情。这是关闭县覆盖的屏幕截图:

enter image description here

2)鉴于这只是关于阿拉巴马州,我想关闭国界以外的边界,但我不知道该怎么做。我的猜测是试验xlimylim,但我不知道如何将它们限制在阿拉巴马州的边界多边形。

1 个答案:

答案 0 :(得分:12)

似乎某些状态的坐标函数borders()连接在一起。

要解决此问题,您可以使用statemap_data()边框存储为单独的数据框,然后使用stategeom_path()边框添加到地图中。在geom_path()添加group=region以确保仅根据一个区域连接点。

要显示阿拉巴马州的边界,您应该将参数region="alabama"添加到函数borders()

al1 = get_map(location = c(lon = -86.304474, lat = 32.362563), 
      zoom = 6, maptype = 'roadmap')
mdat <- map_data('state')
ggmap(al1) + 
  geom_path(data=mdat,aes(x=long,y=lat,group=region),colour="red",alpha=0.8)+
  borders("county", colour="blue", alpha=0.5,region="alabama")

enter image description here