[英]R spplot - plot points over raster with same colour scale
我正在嘗試繪制與外部測量值重疊的克里金法的結果。 我希望根據測量值以相同的網格調色板和黑色邊框繪制測量點。
我可以使用sp.layout繪制點,但是我不明白如何根據具有相同默認網格調色板的值對它們進行着色。
這是我嘗試做的事情:
colbreaks <- seq(from=0, to=5, by=0.1)
rg <-list("sp.points", g, cex=1.5, pch=19, fill=g$rain, colourkey=TRUE)
p1 <- spplot(r, at=colbreaks, sp.layout=rg)
其中g是SpatialPointsDataFrame,其中“ rain”是我要用於顏色的值字段,r是包含插值結果的SpatialGridDataFrame。
結果,這些點未根據網格調色板着色。
任何想法?
PS:我需要將spplot的結果存儲在變量p中,因為然后我將其用於帶有gridExtra的2x2 grid.arrange圖中。
非常感謝你!
如果有人遇到我同樣的問題,這就是我的解決方法:
首先,我選擇spplot使用的調色板:
colscale <- bpy.colors()
然后,創建一個索引,將我的值映射到調色板的相應顏色。 結果是與我的SpatialPointsDataFrame長度相同的向量f,其中包含相應的顏色。 Maxrain是與調色板末端相關的最大值(白色):
ind <- floor(g$rain/maxrain*(length(colscale)-1)+1)
f <- ind
f[ind>length(colscale)]<- "#FFFFFF" # White for the exceeding values
f[is.na(ind)==F & ind<=length(colscale)] <- colscale[ind[is.na(ind)==F & ind<=length(colscale)]]
f[is.na(f)==T] <- "#444444" # Grey for the NA
然后,我為sp.layout創建列表。 第一組要點只是獲得黑色輪廓
rgb<-list("sp.points", g, cex=1.2, pch=19, col = "black", colourkey=T)
rg<-list("sp.points", g, cex=1.0, pch=19, cuts=length(g$rain), col = f, colourkey=T)
最后,我可以在spplot中使用兩個列表:
colbreaks <- seq(from=0, to=maxrain, by=0.1)
p <- spplot(r, at=colbreaks, sp.layout=list(rgb, rg))
希望它也能幫助其他人。 如果您找到一種更聰明,更簡單的方法,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.