Rを使用して特定のラスター値に色を割り当てる方法


9

私はlevelplot素晴らしいrasterVisパッケージの関数を使用して、値がゼロを中心に発散するマップを作成しています。赤から青へのパレットを使用してラスターファイルをプロットしていますが、マップで灰色にゼロ値を割り当てようとしています。

具体的には、この図の色を再現したいと思います。

ここに画像の説明を入力してください

赤から青のスケールが使用されているが、ゼロの値は灰色で着色されていることに注意してください。

現在、私の地図は次のようになっています。ここに画像の説明を入力してください

そして、これはそれを再現するためのコードです(https://www.dropbox.com/s/cypfdu1eaz2fuok/r.annual.tif?dl=0で入手可能なファイル):

# Load required packages
library(rasterVis)

# open file
r.annual <- raster("Downloads/r.annual.tif")

# Set color palette
myTheme=rasterTheme(region=brewer.pal('RdBu', n=11))

# Plot
levelplot(annual.mask, par.settings=myTheme, margin=F)

上記のマップのすべてのゼロ値に灰色を割り当てるにはどうすればよいですか?

回答:


7

:次のように2つの定義済みのカラーパレットと希望グレー色を連結することによって、独自のカラーパレットを定義することができる[赤、オレンジ、黄色パレット] + [ゼロ灰色] + [ブルースパレット]。ゼロの値を灰色に揃えるにはn、事前定義されたカラーパレットに同じ数の色()を使用する必要があります。

以下のコメント付きコードを試してください:

# Load libraries
library('rasterVis')

# open raster file
r.annual <- raster("r.annual.tif")

# Set color palette
zeroCol <-"#B3B3B3" # (gray color, same as your figure example)
reds <- rev(brewer.pal('YlOrRd', n = 7))
blues <- brewer.pal('Blues', n = 7)

myTheme <- rasterTheme(region = c(reds, zeroCol, blues))

# Plot
levelplot(r.annual, par.settings = myTheme, margin = FALSE, main = expression("Precipitation" ~ (mm ~ year^{-1})))

プロット

ラスタには多くのNaを持つスパースデータがあるため、プロットは投稿した図の例とは異なることに注意してください


返信いただきありがとうございます。私の問題はおそらくマップ内のNAが多すぎることに気づきました。ラインのmyTheme$panel.background$col = 'grey70'後に追加してmyThemeプロットし、結果を確認してください。どうやら今、私は画像の周りの過度のNAエリアを取り除く必要があります。
thiagoveloso

2
どういたしまして!0値は値とは異なることに注意してくださいNA。また、それらには異なる意味があります。同じ色を両方に割り当てることはできますが、適切ではないと思います。投稿した図(より多くのデータ)のように見える降水量ラスタが必要な場合は、適切な予測モデルに従ってデータを補間しようとする提案が1つあります。
グズマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.