3

我想画一张全球海面温度的图片,但是在填充了sst的轮廓后,我尝试在填充的图片上添加counter更宽,然后发生了一些奇怪的事情,这两张图片不能放在一起这里是代码,因为我没有空间放原始数据,所以使用了一个随机数

这是代码

library(maps)

ee<-array(rnorm(89*180),dim=c(89,180))

lati <- seq(-90,90,length=89) #Latitudes goes from -90 to 90 as far as I know :)
long <- seq(-180,180,length=180)
plot(NA, xlim=c(-180,180), ylim=c(-90,90), xlab="", ylab="", xaxs="i", yaxs="i")
contour(long, lati, t(ee), add=TRUE)
filled.contour(long,lati,t(ee), color.palette=terrain.colors)
maps::map(database="world", fill=TRUE, col="light blue", add=TRUE)

如我们所见,填充图片的位置与原始数据不对应,例如唯一的轮廓图片

问题是什么?

最后对不起我的英语不好,谢谢大家

4

1 回答 1

3

filled.contour您可以在帮助页面中阅读以下内容:

'filled.contour' 产生的输出实际上是两个图的组合;一个是填充轮廓,一个是图例。为这两个绘图设置了两个独立的坐标系,但它们仅在内部使用 - 一旦函数返回,这些坐标系就会丢失。如果要注释主等高线图,例如添加点,可以在“plot.axes”参数中指定图形命令。请参阅示例。

因此,尝试将此应用于您的示例,您可以执行以下操作:

library(maps)
ee<-array(rnorm(89*180),dim=c(89,180))
lati <- seq(-90,90,length=89) #Latitudes goes from -90 to 90 as far as I know :)
long <- seq(-180,180,length=180)
draw.map <- function() {maps::map(database="world", fill=TRUE, col="light blue", add=TRUE)}
filled.contour(long,lati,t(ee), color.palette=terrain.colors, plot.axes=draw.map())

这使 :

在此处输入图像描述

于 2013-03-22T13:35:55.333 回答