我在 ggplot 中有一张地图(由 geom_polygon、线条、点和线段组成)。原件在 WGS 中,所有单位都以纬度/经度为单位。所有附加数据(用于线和点)也以度为单位。我想将整个事物重新转换为等面积投影(Mollweide)。第一步(转换底层 rworldmap 多边形)相当轻松,尽管有一些奇怪的水平线穿过。但是,我不确定如何处理下一步。正如我所说,所有数据都以度为单位,我想以度为单位指定 xlim/ylim、轴标签和(弯曲)网格线。我是否必须将所有内容转换为 Mollweide 米,或者是否有可能在一个轻松的步骤中重塑我的最终地图对象?
到目前为止,这就是我所拥有的,以展示这些奇怪的水平线。
library(rworldmap)
library(rgdal)
library(ggplot2)
moll_crs<-CRS("+proj=moll +R=10567000 +lon_0=0 +x_0=0 +y_0=0 +units=m +towgs84=0,0,0,0,0,0,0 +no_defs")
ggplot() +
geom_polygon(data = spTransform(getMap(resolution = 'low'), CRSobj = moll_crs),
aes(x = long,
y = lat,
group = group),
fill = 'gray90',
colour = 'gray10',
size = 0.3) +
coord_fixed()
这导致水平线。
编辑:
在@hrbmstr 的回答之后,我将他的 GeoJSON 文件用于coord_map("molleweide")
:
ggplot() +
geom_map(data=world, map=world,
aes(x=long, y=lat, map_id=id),
fill="gray90", color="gray10", size=0.3) +
coord_map("mollweide",
xlim = c(-50, 40))
不过,这个xlim
论点把事情搞砸了,增加了水平线。我认为这些coord_***(xlim)
参数只是改变了可视区域,但它似乎影响了地图的绘制方式。有任何想法吗?