如何覆盖全球的地图中的R语言充满轮廓(How to overlay global map on fi

2019-09-21 02:37发布

我想绘制在充满轮廓一些LAT-LON数据,然后叠加图的顶部的地球。 我想是这样的:

filled.contour(lons, lats, glb.data,
plot.axes={axis(1);axis(2);map(projection='rectangular',parameters=0,add=T)}
)

轮廓绘制的罚款,并在地图上显示出来,但只作为等值线图的面积小的非常微小的黑色矩形。 当然,我希望地图延到充满等值线图的整个区域。

我也试过类似:

filled.contour(lons, lats, glb.data,
plot.axes={axis(1);axis(2);map(projection='rectangular',x=lons,y=lats,parameters=0,add=T)}
)

在这种情况下,地图完全不情节,我得到一个错误信息“没有得出:所有地区越界”人们显然成功做到这一切的时候,但我一直没能得到它的工作。 谁能告诉我什么,我做错了什么? 顺便说一句,我不想​​用格子包。 它不会与其他的东西我的团队正在做的工作。 谢谢。

Answer 1:

好。 任何人谁在乎,我有一个答案。 也许不是最好的答案,但答案。 问题是,有2种共同的方式来表示纬度和经度:度,弧度。 有代表经度第三种常见的方式:本地时间,概括为浮点数即时区的时间。 然后,让生活更有趣,在经度通常表示为-180(东)至180(西)或0至360。

现在,当你试图显示地图,R自动选择基于地图包的内部结构显示的LAT-LON单位。 如果你在一组为单位工作,但[R希望在另一组以显示地图,你的麻烦。 另一种皱纹是不同的地图投影想用不同的单位显示。 正如我所发现的,“默认”投影喜欢度; 它要被显示在情节矩形范围-180到180在经度和-90到90的纬度。 只是,“矩形”预测,尽管它看起来非常像默认的投影,喜欢的弧度; 它要被显示在矩形拉伸-pi到pi(经度)和-pi / 2到pi / 2(纬度)。 这些情节限制根本不在?mapproject讨论。

因此,这里是你需要做的:1)确定所需的地图投影,然后确定是什么限制了它在绘制:

> map(projection=foo,parameters=foo)
> par('usr')   # will return vector of plot limits

2)知道自己的数据是在表达的单位。如果你刚刚抓住别人的数据集,你可能会惊讶这里。

3)当你绘制...

filled.contour(lons, lats, glb.data)

如果你的“离子吸附”和“拉特”是在单位与投影期待,那么你应该确定,你应该能够简单地添加地图与限制相一致

filled.contour(lons, lats, glb.data,
plot.axes={axis(1,...);axis(2,...);map(projection=foo,parameters=foo,add=T)})

但是,如果你的离子吸附和背阔肌不是投影需要的东西,然后你有一点点更多的工作要做。 你必须通过调用标准杆()来重新定义情节的限制。 这是对我工作:

filled.contour(lons, lats, glb.data,
plot.axes={axis(1,...);axis(2,...);par(usr=c(-180,180,-90,90));
map(add=T)})

当我需要的本初子午线在情节的左端(I,E,东经无处不增加在x轴上从0到360),我做了两个调用par()和map():

filled.contour(lons, lats, glb.data,
plot.axes={axis(1,...);axis(2,...);
par(usr=c(0,360,-90,90));map(add=T);  #eastern hemisphere
par(usr=c(-360,0,-90,90));map(add=T)}   #western
)

还有一些其他的皱纹了。 (例如“矩形”的预测没有精确 -pi一个+ PI的限制。)但是,如果我刚才所说的,到目前为止是有道理的,你将能够对付他们。



Answer 2:

为什么不直接使用image

image(lons, lats, glb.data)
library(maps)
map(add = TRUE)

你从哪里得到的想法,尽量把map()plot.axes说法?



文章来源: How to overlay global map on filled contour in R language