ラスター属性テーブル情報を利用して、ラスター1などのラスターの凡例を作成し、ラスターに表示されているクラスのみ凡例を表示したいと考えています。何を取得したいかを説明する例を作成します。
1/ ラスターを構築する
r <- raster(ncol=10, nrow=10)
values(r) <-sample(1:3,ncell(r),replace=T)
2/ ラスター属性テーブルを追加する
r <- ratify(r) # build the Raster Attibute table
rat <- levels(r)[[1]]#get the values of the unique cell frot the attribute table
rat$legend <- c('Class A', 'Class B', 'Class C')
levels(r) <- rat
3/ ラスターをプロットするFig 1
my_col=c('blue','red','green')
plot(r,col=my_col,legend=F,box=F,axes=F)
legend(x='top', legend =rat$legend,fill = my_col)
legend =rat$legend
パラメータを、ratser 属性テーブルにリンクされたラスタのプロパティに置き換えたいと思います。levels()
などを使用してさまざまな組み合わせを試しc(levels(r)[[1]][1])
ましたが、凡例パラメーターで使用できない文字ではなく、リストを生成します。
4/ ラスターをクロップして、2 クラスのみの部分にプロットします (ここでは、右下の範囲の 4 ピクセル)図2
rcrop<-crop(r,extent(r,9,10,9,10))
plot(rcrop,col=my_col,legend=F,box=F,axes=F)
この 2 番目の図では、ラスター2に表示されるクラスの凡例のみを自動的に表示したいと思います。
以下は、Roman 4によって提案された解決策です。