栅格地图上分类数据的图例

13

我想要绘制一个包含 4 种不同值的光栅图(1),并使用分类文本图例来描述这些类别,就像2那样但是有色块。

我尝试使用类似于legend的方法:

legend( 1,-20,legend = c("land","ocean/lake", "rivers","water bodies"))
但我不知道如何将一个值与显示的颜色关联起来。有没有一种方法可以检索使用'plot'显示的颜色并在图例中使用它? Initial raster Raster with legend

转载:http://gis.stackexchange.com/questions/73143/legend-of-a-raster-map-with-categorical-data - user3710546
2个回答

20

rasterVis软件包中包含了一个用于levelplot()Raster方法,可以绘制分类变量并生成适当的图例:

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="")

在此输入图片描述


2

默认情况下,栅格图中使用的颜色是由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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接