我想绘制一个包含4个不同值(1)的栅格,其中包含一个分类文字图例,用于描述2等类别,但带有颜色框:
我尝试过使用传奇,例如:
legend( 1,-20,legend = c("land","ocean/lake", "rivers","water bodies"))
但我不知道如何将一个值与显示的颜色相关联。有没有办法检索“情节”显示的颜色并在图例中使用它?
答案 0 :(得分:16)
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="")
答案 1 :(得分:1)
默认情况下,栅格图中使用的颜色由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)