R:删除 tmap 地图中的岛屿

R: Remove island in a tmap map

我正在尝试使用 tmap 移除岛屿。

我经常使用 lims 来移除 ggplot 中的岛屿:

library(tmap)
library(ggplot2)
library(raster)

chile  <- getData("GADM",country="Chile",level=1)

ggplot()+
    geom_polygon(data=chile, aes(x=long, y=lat, group = group),
         color = "#666666") +
         coord_equal() + 
         lims(x = c( -77.2,-60), y = c(-60, -15))

ggplot Chile map

但是 tmap 不允许使用 lims 和 island 从大陆干扰地图:

tm_shape(chile) +
tm_borders()   

tmap Chile with islands

我将 facet 与 tmap 一起使用,因为它给我带来了更好的结果,但孤岛对我来说是个问题:

    chile2= chile[c(2,4:5,7,8,12:16),]
    chile2$group=1
    chile3= chile[c(1,3,6,9:11),]
    chile3$group=2
    map_split=rbind(chile2, chile3)

    tm_shape(map_split) +
    tm_borders() +
    tm_facets(by = "group")

tmap Chile facet

你可以看到岛屿是如何不允许获得好的面图的。

你知道如何在 tmap 地图中删除岛屿吗?

谢谢

您可以从数据集中删除不需要的区域。

library(raster)
chile  <- getData("GADM",country="Chile",level=1)
xchile <- crop(chile, extent(-85,-59, -61, -14))

运行 需要一段时间,因为智利是一个相当复杂的数据集,因为它有很多岛屿