将岛屿绘制为世界地图上的点

时间:2016-09-25 12:36:49

标签: r rworldmap maping

我正在使用rworldmap创建一个世界地图来显示数据。对于我的数据,小岛屿国家非常重要,但它们太小,无法看到整个世界何时被展示。因此,我希望在岛屿国家的位置有一个小的可见点/圆,而不是相应类别的颜色。我环顾四周,但没有找到解决方案。当然,我可以为每个岛国手动完成这项工作。我的问题是,有更快的解决方案吗?

作为一个例子,这里是绘制rworldmap包附带的数据(在本例中为生物多样性)的标准示例。在这张地图中,我怎么能向岛国展示?任何建议将不胜感激!

library(rworldmap)
mapCountryData()
data("countryExData",envir=environment(),package="rworldmap")
sPDF <- joinCountryData2Map(countryExData
              , joinCode = "ISO3"
              , nameJoinColumn = "ISO3V10"
              )
mapCountryData( sPDF
              , nameColumnToPlot="BIODIVERSITY" 
              )

1 个答案:

答案 0 :(得分:0)

感谢lmo指出我正确的方向,我现在找到了解决方案。我将在此提供答案,包括可重复的示例。我还认为我必须解释一些我没有说清楚的问题。我希望绘制世界上所有国家的世界地图。然后,我想为岛屿国家添加额外的点以使它们可见。我找到的解决方案是首先绘制正常的世界地图,然后在第一个地块上添加第二个地图,但仅针对lmo建议的选定岛屿国家。

首先,这里是再次生成基本情节的代码

par(mar=c(0,0,1,0))
data("countryExData",envir=environment(),package="rworldmap")
sPDF <- joinCountryData2Map(countryExData, joinCode = "ISO3", nameJoinColumn = "ISO3V10")
mapCountryData( sPDF, nameColumnToPlot="BIODIVERSITY", catMethod="fixedWidth")

在这里,岛屿不可见,它们太小了。现在我必须为这些岛国生成数据集。它们不在数据集中,所以为了演示我想要做的事情,我选择了一些岛国并重新使用了其他数据集中的一些数据。所以这里的数据不是实际数据。

mapdata2 <- data.frame(ccode=c("ATG", "COM", "CPV", "DMA", "FJI", "FSM",
     "GRD", "KIR", "KNA", "LCA", "MDV", "MHL", "MUS", "NRU","PLW", "SLB", 
     "STP", "SYC", "TON", "TUV", "VCT", "VUT", "WSM"), 
     biodiv=countryExData$BIODIVERSITY[1:23], size=1)

最后需要大小变量,以便所有岛点的大小相同。现在我可以使用mapBubbles命令将选定岛屿国家的点添加到原始图中,如下所示。

sPDF2 <- joinCountryData2Map(mapdata2, joinCode = "ISO3", nameJoinColumn = "ccode")
mapBubbles(sPDF2,nameZSize='size', nameZColour='biodiv',add = T, 
     addColourLegend = F, addLegend = F, pch=21, symbolSize=.22,catMethod="fixedWidth")

这产生了下面的地图。可能有更好或更快的方式,但我现在对结果非常满意。当然,颜色,符号大小等现在可以改变......

enter image description here