4

データ範囲がかなり異なる 7 つのラスターのラスター スタックがあり、すべてのラスターがまったく同じ範囲に準拠しているわけではありません。(低い値の範囲もあれば、はるかに高い値の範囲もあります)。スタックで levelplot 関数を使用すると、十分にうまくプロットされます。

r <- raster(ncol=10,nrow=10)
r[] <- sample(c(1:3),size=100,replace=T)
r1 <- raster(ncol=10,nrow=10)
r1[] <- sample(c(1:9),size=100,replace=T)
r2 <- raster(ncol=10,nrow=10)
r2[] <- sample(c(5:15),size=100,replace=T)
r3 <- raster(ncol=10,nrow=10)
r3[] <- sample(c(3:35),size=100,replace=T)
s <- stack(r,r1,r2,r3)

breaks <- 7
my.at <- round(seq(min(minValue(s)), max(maxValue(s)), length.out = breaks),digits=2)
myColorkey <- list(at=my.at,height=0.95, width=1, labels=list(at=my.at,cex=1.1))
cols <- (brewer.pal(length(my.at)-1, "YlGnBu"))
levelplot(s,at=my.at,col.regions=cols,colorkey = myColorkey)

ここに画像の説明を入力

ご覧のとおり、値の低いデータの画像は単色です (実際、私の実際のデータでは、データ範囲が後者の 2 つのラスターによって支配されているため、ほとんどのプロットは単色です)。levelplot 関数を使用して、ラスター スタック全体を再分類し、値 x を超える値 (上記のサンプル データではおそらく 10) を 1 つの色として定義し、単純に割り当てたクラスを使用して、値の低いラスターのパターンを抽出します。 .

レベルを承認して設定する通常の方法はスタックでは機能せず、私が試した回避策 (マトリックスと再分類を使用) は、ラスターのクラスよりも多くのレベルを強制しません。

これは標準の凡例を使用した私の回避策ですが、可能であれば批准などを使用したいと思います。

# using s from above
m <- c(0,1,1,  1,3,2,  3,6,3,  6,10,4,  10,35,5)
mat <- matrix(m, ncol=3, byrow=TRUE)
src <- reclassify(s, mat)

breaks <- nrow(mat)
my.at <- (0:breaks)
myColorkey <- list(at=my.at,height=0.95, width=1, labels=list(at=my.at+0.5,labels=c("0-1","1-3","3-6","6-10","10-35"),cex=1.1))
cols <- (brewer.pal(length(my.at)-1, "YlGnBu"))

levelplot(src,at=my.at,col.regions=cols,colorkey = myColorkey)

ここに画像の説明を入力

4

0 に答える 0