2016-08-30 16 views
0

外部ドリフトでクリギングの結果をプロットしようとしましたが、測定ポイントがオーバーラップしています。測定値に応じて、測定点をグリッドの同じカラーパレットと黒い境界線でプロットすることを希望します。R spplot - 同じカラースケールのラスター上のプロットポイント

私はsp.layoutで点をプロットすることができますが、グリッドの同じデフォルトのカラーパレットを使って値を色分けする方法を理解できません。ここ

は私がやろうものです:

gは「雨は」私は色のために使用したい値のフィールドであり、rはtehの結果が含まれていSpatialGridDataFrameあるSpatialPointsDataFrameある
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) 

の補間を行う。

その結果、ポイントはグリッドパレットに応じて着色されません。

PS:変数pに結果を格納する必要があります。なぜなら、gridExtraを使った2x2 grid.arrangeプロットで使用するからです。

ありがとうございました!

答えて

0

誰かが私と同じ問題に遭遇した場合、これは私がそれを解決する方法である:

まず私は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)) 

は、それはあまりにも他の誰かに役立ちます願っています。 スマートでシンプルな方法を見つけたらお知らせください。

This is the result of the lines above. The raster and the points have the same colour scale.

関連する問題