如何在R中为不同的spplots使用相同的颜色间隔

时间:2014-03-12 12:20:39

标签: r

我已经插入了不同日期的温度数据图,例如:

2 interpolated maps(left: January, right: July

我想并排显示不同日子的地图,但是想要两者都有相同的颜色渐变和间隔。 最高温度值为:29.8 min:-13.4

我确实尝试使用How to use the same color scale for points in different maps in R?中的答案,但我确实收到了错误:

maxim <- 30
minim <- -14
cuts <- 2*(-7:15)
p1 <- spplot(idw_ger, "var1.pred", main="IDW January, 10", cuts=cuts, col.regions=bpy.colors(30)) +
latticeExtra::layer(sp.polygons(ger, fill = NA, col = 'blue')) +
latticeExtra::layer(sp.points(tdata,
                            fill = NA, col = 'black'))

seq.default中的错误(zrng 1,zrng [2],length.out = cuts + 2):   长度必须是非负数 另外:警告信息: 在seq.default(zrng 1,zrng [2],length.out = cut + 2):   使用的第一个元素是&#39; length.out&#39;参数

我做错了什么,如何将其付诸实践?

1 个答案:

答案 0 :(得分:0)

鉴于只能为SpatialPointsDataFrame指定精确的cuts,我认为您需要使用spplot的替代方法。以下是使用imageimage.plot作为图例的示例(改编自https://stat.ethz.ch/pipermail/r-sig-geo/2007-June/002143.html)。通过设置数据的上限和下限(zlim),您可以创建两个相同的颜色渐变。只需将zinc.idwcopper.idw替换为您自己的数据。

加载数据:

library(sp)
library(gstat)
library(fields)
data(meuse)
coordinates(meuse) = ~x+y
data(meuse.grid)
coordinates(meuse.grid) = ~x+y
gridded(meuse.grid) = TRUE

创建两个IDW网格:

zinc.idw = krige(zinc~1, meuse, meuse.grid)
copper.idw = krige(copper~1, meuse, meuse.grid)

设置情节:

par(mfrow=c(1,2),oma=c(2,2,2,2))
cols = bpy.colors(30)
zmin = 0
zmax = 1000

绘制地图和测量位置:

image(zinc.idw, zlim=c(zmin,zmax),col=cols)
box()
mtext(side=3,text='zinc')
points(meuse, pch = 3)

添加图例:

image.plot( zlim=c(zmin,zmax), nlevel=5,legend.only=TRUE, horizontal=F, col=cols)

其他铜网相同;

image(copper.idw, zlim=c(zmin,zmax),col=cols)
box()
mtext(side=3,text='copper')
points(meuse, pch = 3)
image.plot( zlim=c(zmin,zmax), nlevel=5,legend.only=TRUE, horizontal=F, col=cols)