0

我一直在使用 R 绘制世界地图,我想切换到以太平洋为中心并分割大西洋的地图,以使我的数据绘制更容易。

但是默认的 R 集是这样的:

 map("world") 

R 默认设置

我希望地图是这样的:

世界地图想要

我已经尝试了 R worldmap 选项“方向”的帮助,尽管帮助说“方向一个向量 c(纬度,经度,旋转)描述了地图应该居中的位置以及围绕这个中心的顺时针旋转(以度为单位)。 " 我仍然不能使用它,例如下面的命令只产生这个:

 map("world",orientation=c(35,104,0)) 

 Warning:
 In map("world", orientation = c(35, 104, 0)) :
 projection failed for some data

结果是这样的:

R 绘制奇数图

结果很奇怪。那么我怎样才能得到如图 2 所示的正确结果呢?谢谢你。

4

2 回答 2

4

您的示例图片似乎以 0 lat、150 lon 为中心。以下似乎大致为您生成示例图片:

library(maps)
map("world",orientation=c(90, 150,0), projection="mollweide", wrap=TRUE) 

出于某种原因,您似乎需要在经度上加上 90。

于 2013-07-18T10:17:52.137 回答
1

这是一个更复杂的解决方案,但却是学习如何处理 SpatialPolygons 对象的一个​​很好的训练练习。

library(maptools)
library(rgdal)
data(wrld_simpl) #The world as a SpatialPolygonsDataFrame
#To avoid the lines crossing the map after reprojection we need to cut the polygons at the new break:
w <- nowrapRecenter(wrld_simpl, offset = 180-150, avoidGEOS=TRUE)
#Then proceed with the reprojection (note the proj4 string for a mollweide projection with 150°E as the new center)
wrld_china <- spTransform(w, CRS("+proj=moll +lon_0=150"))
plot(wrld_china)

在此处输入图像描述

于 2013-10-25T08:21:41.820 回答