2015-05-20 83 views
4

正如你在下面看到的,在我使用ggplots製作的地圖上有一個奇怪的顯示問題。任何投影似乎都會出現同樣的問題。ggplot2可視化地圖/顯示錯誤?

enter image description here

下面是代碼: 只有包mapsggplot2需要

mapWorld <- borders("world", colour="gray50", fill="black") 
    ggplot() + mapWorld + 
     coord_map("mercator") + 
     ylim(-90,90) 
+0

看起來像數據中的問題。也許在排序中,也許不是。當我運行'summary(mapWorld $ data)'看起來像經度編碼從-179到190 ......我期望-180到180 – Gregor

+0

我沒有想到這一點。我會嘗試與其他數據。謝謝 ! – ePoQ

+1

我可以複製你的問題,但'?border'底部的例子對我來說工作得很好。我99%肯定這是一個數據問題,而不是一個ggplot問題。 – Gregor

回答

1

顯然,問題是由穿越0座標的多邊形,在這種世界融合的地方造成的。 R不知道如何關閉這些多邊形並將它們投影到世界各地。

此方法重新創建多邊形並防止它們穿過0座標(xlim和ylim)。它適用於任何類型的投影。

require(ggplot2) 
require(PBSmapping) 
require(data.table) 

mapWorld <- map_data("world") 
setnames(mapWorld, c("X","Y","PID","POS","region","subregion")) 
worldmap = clipPolys(mapWorld, xlim=xlim,ylim=ylim, keepExtra=TRUE) 
ggplot() + geom_polygon(data = mapWorld, aes(X,Y,group=PID)) 
+0

這會引發以下錯誤:'.clip錯誤(多邊形,xlim,ylim,isPolygons = TRUE,keepExtra): (list)對象不能被強制鍵入'double'' –

1

爲什麼你需要使用?

ggplot() + mapWorld + 
    coord_map("mercator") + 
    ylim(-90,90) 

如果u只使用

ggplot() + mapWorld 

它完美