如何将数字映射到颜色?

hya*_*yat 1 plot r raster

我试图将此文件(无符号字符,像素= 1440和行= 720)视为地图.我尝试了下面给出的代码片段.首先,我下载的问题可能是这个代码使用了连续的配色方案,即使我有离散数据(这是一种分类方案).如何将数字映射到颜色?请将需要的比例示例如下所示:

conne <- file("C:\\landcover.bin", "rb")
dfr<- readBin(conne, integer(), size=1,  n=720*1440, signed=F)

y<-matrix((data=dfr), ncol=1440, nrow=720)
image(y)
Run Code Online (Sandbox Code Playgroud)

Osc*_*ñán 6

raster包提供了使用分类数据的方法.ratify有关详细信息,请阅读帮助页面.

首先让我们RasterLayer用你的数据创建一个:

library(raster)

dfr <- readBin('biome1440s.bin', integer(), size=1,  n=720*1440, signed=F)
r <- raster(nrow=720, ncol=1440)
r[] <- dfr
Run Code Online (Sandbox Code Playgroud)

现在我们将其定义RasterLayer为一个因素ratify.您应该使用您的信息而不是更改其级别LETTERS:

r <- ratify(r)
rat <- levels(r)[[1]]
rat$soil <- LETTERS[1:15]
levels(r) <- rat
Run Code Online (Sandbox Code Playgroud)

最后,这个分类RasterLayer可以用levelplot方法显示.rasterVis

library(rasterVis) 
myPal <- c('lightblue', terrain.colors(14))
## using par.settings
levelplot(r, par.settings=rasterTheme(region=myPal))
## or with col.regions
levelplot(r, col.regions=myPal)
Run Code Online (Sandbox Code Playgroud)

世界土地用途

编辑:levelplot使用lattice图形,同时plot使用 base图形.它们不能一起使用(除非您使用该 gridBase包).但是,您可以使用包中的+.trellislayer函数 轻松覆盖其他信息latticeExtra.既然wrld_simplSpatialPolygonsDataFrame你可以使用包中的sp.polygons函数sp来绘制它.

library(maptools) ## needed for wrld_simpl
data(wrld_simpl) ## a SpatialPolygonsDataFrame
levelplot(r, col.regions=myPal) +
    layer(sp.polygons(wrld_simpl, lwd=0.5))
Run Code Online (Sandbox Code Playgroud)

wrld_simpl