2016-09-25 77 views
0

我使用rworldmap來創建世界地圖來顯示數據。就我的數據而言,小島嶼國家非常重要,但它們太小,無法看到整個世界何時展示。所以我想在適當類別的顏色下在島嶼國家有一個小的可見點/圓圈。我環顧四周,但沒有找到解決方案。當然,我可以爲每個島國手動做到這一點。我的問題是,有沒有更快的解決方案?作爲世界地圖上的點繪製島嶼

作爲示例,以下是rworldmap軟件包附帶的繪製數據(本例中爲生物多樣性)的標準示例。我怎麼能在這張地圖上顯示島國?任何建議,將不勝感激!

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

很寬泛的問題。我的建議是找到一個包含所有國家質心的文件,然後保留那些您認爲是小島國家的文件,並繪製這些點。也許這樣的文件已經存在於其中一個包中。 – lmo

回答

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