4 つの異なる値 ( 1 ) を含むラスターを、 2などのカテゴリを説明するカテゴリ テキストの凡例と、カラー ボックスを使用してプロットしたいと考えています。
次のような凡例を使用してみました:
legend( 1,-20,legend = c("land","ocean/lake", "rivers","water bodies"))
しかし、表示された色に 1 つの値を関連付ける方法がわかりません。「プロット」で表示された色を取得して凡例で使用する方法はありますか?
4 つの異なる値 ( 1 ) を含むラスターを、 2などのカテゴリを説明するカテゴリ テキストの凡例と、カラー ボックスを使用してプロットしたいと考えています。
次のような凡例を使用してみました:
legend( 1,-20,legend = c("land","ocean/lake", "rivers","water bodies"))
しかし、表示された色に 1 つの値を関連付ける方法がわかりません。「プロット」で表示された色を取得して凡例で使用する方法はありますか?
rasterVisパッケージには、カテゴリ変数をプロットして適切な凡例を生成するのRaster
メソッドが含まれています。levelplot()
library(raster)
library(rasterVis)
## Example data
r <- raster(ncol=4, nrow=2)
r[] <- sample(1:4, size=ncell(r), replace=TRUE)
r <- as.factor(r)
## Add a landcover column to the Raster Attribute Table
rat <- levels(r)[[1]]
rat[["landcover"]] <- c("land","ocean/lake", "rivers","water bodies")
levels(r) <- rat
## Plot
levelplot(r, col.regions=rev(terrain.colors(4)), xlab="", ylab="")
デフォルトでは、ラスター プロットで使用される色は によって生成されますrev(terrain.colors())
(「 」を参照?raster::plot
)。これを使用して、凡例の 4 色のシーケンスを再作成するか、ランダムな色のシーケンスを選択できます。
my_col = rev(terrain.colors(n = 4))
# my_col = c('beige','red','green','blue')
まず、カラー シーケンスを使用してマップをプロットします。legend = FALSE
標準のカラーバーを取り除きます:
plot(my_raster, legend = FALSE, col = my_col)
左下にカスタム凡例を追加します。引数を使用して、fill
色付きのボックスを生成します。
legend(x='bottomleft', legend = c("land", "ocean/lake", "rivers", "water bodies"), fill = my_col)