将岛屿绘制为世界地图上的点
Plot islands as dots on world map
我正在使用 rworldmap
创建世界地图来显示数据。对于我的数据来说,小岛国还是挺重要的,但是在展示整个世界的时候,它们太小了,根本看不出来。所以我想在岛屿国家的位置以适当类别的颜色显示一个小的可见 dot/circle。我环顾四周,但没有找到解决方案。当然,我可以为每个岛国手动执行此操作。我的问题是,有没有更快的解决方案?
例如,这是 rworldmap
软件包附带的绘制数据(在本例中为生物多样性)的标准示例。在这张地图中,我如何显示岛国?如有任何建议,我们将不胜感激!
library(rworldmap)
mapCountryData()
data("countryExData",envir=environment(),package="rworldmap")
sPDF <- joinCountryData2Map(countryExData
, joinCode = "ISO3"
, nameJoinColumn = "ISO3V10"
)
mapCountryData( sPDF
, nameColumnToPlot="BIODIVERSITY"
)
感谢 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")
这产生了下面的地图。可能有更好或更快的方法,但我现在对结果很满意。当然,现在可以更改颜色、符号大小等...
我正在使用 rworldmap
创建世界地图来显示数据。对于我的数据来说,小岛国还是挺重要的,但是在展示整个世界的时候,它们太小了,根本看不出来。所以我想在岛屿国家的位置以适当类别的颜色显示一个小的可见 dot/circle。我环顾四周,但没有找到解决方案。当然,我可以为每个岛国手动执行此操作。我的问题是,有没有更快的解决方案?
例如,这是 rworldmap
软件包附带的绘制数据(在本例中为生物多样性)的标准示例。在这张地图中,我如何显示岛国?如有任何建议,我们将不胜感激!
library(rworldmap)
mapCountryData()
data("countryExData",envir=environment(),package="rworldmap")
sPDF <- joinCountryData2Map(countryExData
, joinCode = "ISO3"
, nameJoinColumn = "ISO3V10"
)
mapCountryData( sPDF
, nameColumnToPlot="BIODIVERSITY"
)
感谢 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")
这产生了下面的地图。可能有更好或更快的方法,但我现在对结果很满意。当然,现在可以更改颜色、符号大小等...