4

我有一个我只想绘制一部分的 shapefile(多边形),所以使用 ggplot 的 geom_path 我用 xlim 和 ylim 限制可见路径。Shapefile可在此处获得 (2.5 MB)

library(rgdal)
library(ggplot2)


coast <- readOGR(dsn=".", layer="coast-rgdal")
coast.df <- fortify(coast, region="STATE_NAME")
p <- ggplot(coast.df, aes(x=long, y=lat, group=group)) +
  geom_path(colour="black", size=1/4) +
  xlim(146, 148) + ylim(-39.25, -37.5) + coord_fixed()
p

看起来像这样:

维克海岸开放

我想要的是这样的封闭路径(用gimp完成):

维克海岸关闭

我可以用 ggplot 命令做到这一点吗?还是R中的其他东西?

作为参考,完整的多边形如下所示:

在此处输入图像描述

4

1 回答 1

3

您可以使用gIntersectionrgeos包中提取此区域:

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

coast <- readOGR(dsn=".", layer="coast-rgdal")

lim <- cbind(c(146, 148, 148, 146, 146),
             c(-39.25, -39.25, -37.5, -37.5, -39.25))
x <- SpatialPolygons(list(Polygons(list(Polygon(lim)), ID="1")))
proj4string(x) <- proj4string(coast)
res <- gIntersection(coast, x)

coast.df <- fortify(res)
p <- ggplot(coast.df, aes(x=long, y=lat, group=group)) +
     geom_path(colour="black", size=1/4) +
     xlim(146, 148) + ylim(-39.25, -37.5) + coord_fixed()
p

R图

于 2013-09-24T09:54:13.527 回答