在ggplot/ggmap中省略一些边框

8

我对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个回答

12

使用函数borders(),看起来某些州的坐标连接在一起。

要解决这个问题,您可以使用map_data()state边界作为单独的数据框存储,然后将state边界添加到地图上,使用geom_path()。在geom_path()中添加group=region以确保点仅按一个区域进行连接。

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

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

在此输入图片描述


谢谢!这个很好用。我不知道在这里问这个问题是否符合礼仪,但我还是要问一下——有没有办法根据一个截止点将点分成两种不同的颜色?(例如,如果增长>0,则为“蓝色”,否则为“红色”)。 - Lucius Sergius Catilina
我一直在尝试使用scale_color_manual,但是我无法让它正常工作。我主要尝试了两件事情,一是定义一个函数,如果x>0,则为“红色”,否则为“蓝色”,然后调用它,但是会出现类似于“ifelse(Growth < 0, "red", "blue") : object 'Growth' not found”的错误。我还尝试添加“aes(colour=Growth>0)+scale_colour_manual(values=c("red","blue"))”等变化,但它指出了“non-numeric argument to binary operator”错误。我对提出这样基本的问题感到有些不好意思,但我对这个程序很陌生。 - Lucius Sergius Catilina
2
@LuciusSergiusCatilina 试试 geom_point(data=dat,inherit.aes = FALSE, aes(y=Lat, x=Lon, size=Growth, color=Growth>0))+ scale_colour_manual(values=c("red","blue")) - Didzis Elferts
谢谢,那个很好用。我还添加了“+ theme(legend.position = "none")”。现在我真的很喜欢这张地图! - Lucius Sergius Catilina
该死!当查看 geom_XX 的文档时,inherit.aes 在哪里记录? - a different ben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接