我想使用栅格属性表信息来创建栅格的图例,例如栅格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/ 绘制栅格图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])
但我生成了一个列表,而不是在 legend 参数中不可用的字符。
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上显示的类的图例。
这是 Roman 4提出的解决方案。