@thelatemail 的答案是我见过的解决这个问题的最好和最简单的解决方案。但是,为了使其更通用,最好按名称删除多边形。这是因为根据您首次调用 map() 的限制,多边形名称的索引可能会有所不同。
library(maps)
library(mapproj)
library(mapdata)
mapnames <- map("world2Hires", xlim=c(120, 260), ylim=c(-60, 40),
fill=TRUE, plot=FALSE)
mapnames2 <- map("world2Hires", xlim=c(100, 200), ylim=c(-20, 60),
fill=TRUE, plot=FALSE)
mapnames$names[10]
[1] "Mali"
mapnames2$names[10]
[1] "Thailand"
有 8 个国家与本初子午线相交:英国、法国、西班牙、阿尔及利亚、马里、布基纳法索、加纳和多哥。通过将这些国家名称与 匹配mapnames$names
,您可以删除多边形,而不管您的原始范围如何:
remove <- c("UK:Great Britain", "France", "Spain", "Algeria", "Mali",
"Burkina Faso", "Ghana", "Togo")
map("world2Hires", regions=mapnames$names[!(mapnames$names %in% remove)],
xlim=c(120, 260),
ylim=c(-60, 40),
boundary=TRUE,
interior=TRUE,
fill=TRUE
)
map.axes()
您也可以使用 grepl() 但由于多边形是按层次命名的,您可以删除相关国家的一些子多边形。例如,mapnames$names[grepl("UK", mapnames$names)]
返回 34 个匹配项。
我会建议将此作为编辑,但我还没有特权。