簡體   English   中英

用ggplot2 :: borders()繪制太平洋和大洲

[英]Plot Pacific Ocean and continents with ggplot2::borders()

我想使用ggplot::borders()顯示太平洋。 我的問題是我不知道如何向西展示澳大利亞和亞洲,向東展示美洲。

ggplot() + borders() + coord_cartesian(xlim = c(-290, -70))

在結果圖中,應該顯示亞洲和澳大利亞,但沒有顯示。

沒有亞洲和澳大利亞

我想做一些類似的事情:

ggplot() + borders() + borders(x = long - 360)

得到這樣的地圖:

世界地圖

有人可以幫我解決這個問題嗎? 關於mapsggmap包,有關於SO的答案,但是我無法使用ggplot2::borders()找到答案。

任何答案的一個重要方面是,經緯度值是正確的。 面臨的挑戰是:使用傳統的經度坐標,從正值(E半球)開始增加太平洋的視野,然后在反子午線(W半球)處切換為減小負值。 如何在R中最好是borders()繪制此圖?

慣例

就像是:

library(sp)
library(maps)
library(maptools)
library(ggplot2)
library(ggthemes)

world <- map("world", fill=TRUE, col="transparent", plot=FALSE)
worldSpP <- map2SpatialPolygons(world, world$names, CRS("+proj=longlat +ellps=WGS84"))
worldSpP <- worldSpP[-grep("Antarctica", row.names(worldSpP)),]
worldSpP <- worldSpP[-grep("Ghana", row.names(worldSpP)),]
worldSpP <- worldSpP[-grep("UK:Great Britain", row.names(worldSpP)),]
worldSpPnr <- nowrapRecenter(worldSpP)

world_map <- fortify(worldSpPnr)

gg <- ggplot()
gg <- gg + geom_map(data=world_map, map=world_map,
                    aes(x=long, y=lat, map_id=id),
                    color="black", fill="white", size=0.25)
gg <- gg + coord_map()
gg <- gg + theme_map()
gg

在此處輸入圖片說明

我嘗試將其放大一點,以使其更貼近您發布的內容(下面的代碼)。 感謝kohske的 回答

ggplot2地圖太平洋

# install.packages("mapdata", dependencies = TRUE)
# install.packages("ggplot2", dependencies = TRUE)

library(ggplot2)
library(mapdata)

mp1 <- fortify(map(fill=TRUE, plot=FALSE))
mp2 <- mp1
mp2$long <- mp2$long + 360
mp2$group <- mp2$group + max(mp2$group) + 1
mp <- rbind(mp1, mp2)
ggplot(aes(x = long, y = lat, group = group), data = mp) + 
  geom_path()  + 
  scale_x_continuous(limits = c(110, 300)) + 
  scale_y_continuous(limits = c(-50, 70)) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM