Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用ggmap打印形状文件:当形状文件大于ggmap时进行剪裁_R_Ggplot2_Ggmap - Fatal编程技术网

R 使用ggmap打印形状文件:当形状文件大于ggmap时进行剪裁

R 使用ggmap打印形状文件:当形状文件大于ggmap时进行剪裁,r,ggplot2,ggmap,R,Ggplot2,Ggmap,当我尝试将ggmap与形状文件组合时,我遇到了剪辑问题。Kahle和Wickham(2013:158)中的示例效果很好,因为ggmap中的光栅图像覆盖了整个形状文件。下面是一个例子,当我尝试在覆盖较小区域的ggmap图上绘制美国各州的形状文件时,会发生什么。ggmap显示了纽约市,我想用美国各州的边界覆盖它(作为一个例子)。生成的贴图没有任何意义。问题是形状文件被剪裁,ggplot连接未剪裁的点。下面是代码。形状文件来自。我只是在这里展示最后一个情节 我怎样才能解决这个问题 path <-

当我尝试将ggmap与形状文件组合时,我遇到了剪辑问题。Kahle和Wickham(2013:158)中的示例效果很好,因为ggmap中的光栅图像覆盖了整个形状文件。下面是一个例子,当我尝试在覆盖较小区域的ggmap图上绘制美国各州的形状文件时,会发生什么。ggmap显示了纽约市,我想用美国各州的边界覆盖它(作为一个例子)。生成的贴图没有任何意义。问题是形状文件被剪裁,ggplot连接未剪裁的点。下面是代码。形状文件来自。我只是在这里展示最后一个情节

我怎样才能解决这个问题

path <- "PATH TO SHAPEFILE"
library("ggmap")
library("rgdal")

# shapefile
states <- readOGR(dsn = path, layer = "states")
states_df <- fortify(states)
# plot shapefile
plot(states, lwd = 0.1)
ggplot(states_df, aes(long, lat, group = group)) +
    geom_polygon(colour = "black", fill = NA, size = 0.1)


# combine ggmap with shapefile
map <- get_map("new york city", zoom = 10, source = "stamen")
ggmap(map, extent = "device")

ggmap(map, extent = "device") +
    geom_polygon(aes(long, lat, group=group), data = states_df, colour = "red", fill = NA, size = 1)

path我想看看这个答案,当你放大时,ggmap似乎没有以理想的方式处理多边形,也就是说,不在绘图上的项目被截断,导致与形状文件相关的“有趣”结果

#转换以获得良好的度量

以下是我的尝试。我经常使用GADM shapefile,您可以使用
光栅
包直接导入。我为NY、NJ和CT子集了形状文件。您最终可能不必这样做,但最好减少数据量。当我绘制地图时,ggplot自动删除了停留在ggmap图像bbox之外的数据点。因此,我不必做任何额外的工作。我不确定你用的是哪种形状文件。但是,GADM的数据似乎与ggmap图像配合得很好。希望这对你有帮助

library(raster)
library(rgdal)
library(rgeos)
library(ggplot2)

### Get data (shapefile)
us <- getData("GADM", country = "US", level = 1)

### Select NY and NJ
states <- subset(us, NAME_1 %in% c("New York", "New Jersey", "Connecticut"))

### SPDF to DF
map <- fortify(states)

## Get a map
mymap <- get_map("new york city", zoom = 10, source = "stamen")


ggmap(mymap) +
geom_map(data = map, map = map, aes(x = long, y = lat, map_id = id, group = group))

很好的结果,使用多边形的geom_路径会遇到的一个问题是,如果形状文件中的顶点数量不够多,那么将在地图边缘附近进行截断。这是否解决了截断问题
ggmap(mymap)+geom_map(data=map,map=map,aes)(x=long,y=lat,map_id=id,group=group),color=“black”,fill=NA,size=0.5)
?我在边界线的中顶端看到了问题,但在
geom_map
fill=NA
@user2503795中似乎没有问题。我为你感到高兴。@jazzurro:谢谢!基于您的解决方案,我认为对我的问题最简单的回答是:使用
geom\u map
而不是
geom\u polygon
,并调整参数(添加
map=[强化数据框]
map\u id=id
作为
aes
调用的美学参数)@user2503795我很高兴听到您根据这个答案找到了解决方案。谢谢你在这里分享你自己的想法。这将在将来帮助其他一些用户。:)这里的问题与这个问题有关吗?
library(raster)
library(rgdal)
library(rgeos)
library(ggplot2)

### Get data (shapefile)
us <- getData("GADM", country = "US", level = 1)

### Select NY and NJ
states <- subset(us, NAME_1 %in% c("New York", "New Jersey", "Connecticut"))

### SPDF to DF
map <- fortify(states)

## Get a map
mymap <- get_map("new york city", zoom = 10, source = "stamen")


ggmap(mymap) +
geom_map(data = map, map = map, aes(x = long, y = lat, map_id = id, group = group))
ggmap(mymap) +
geom_path(data = map, aes(x = long, y = lat, group = group))