我已经插入了不同日期的温度数据图,例如:
我想并排显示不同日子的地图,但是想要两者都有相同的颜色渐变和间隔。 最高温度值为: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;参数
我做错了什么,如何将其付诸实践?
答案 0 :(得分:0)
鉴于只能为SpatialPointsDataFrame指定精确的cuts
,我认为您需要使用spplot
的替代方法。以下是使用image
和image.plot
作为图例的示例(改编自https://stat.ethz.ch/pipermail/r-sig-geo/2007-June/002143.html)。通过设置数据的上限和下限(zlim
),您可以创建两个相同的颜色渐变。只需将zinc.idw
和copper.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)