如何将数字映射到颜色?

时间:2013-04-25 11:44:21

标签: r plot raster

我正在尝试将此文件(无符号字符,pixel = 1440和lines = 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)

3 个答案:

答案 0 :(得分: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

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

r <- ratify(r)
rat <- levels(r)[[1]]
rat$soil <- LETTERS[1:15]
levels(r) <- rat

最后,可以显示此分类RasterLayer levelplot packagerasterVis方法。

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)

world land uses

已编辑:levelplot使用lattice图片,plot使用。base gridBase图片。它们不能一起使用(除非你使用 +.trellis包裹)。但是,您可以轻松覆盖其他内容 使用layerlatticeExtra函数的信息 wrld_simpl包。由于SpatialPolygonsDataFrame是一个 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)) 包中绘制它。

{{1}}

wrld_simpl

答案 1 :(得分:1)

首先,没有代码可以使用“连续”配色方案,因为所有数据都是数字和量化的 现在,R中有许多内置颜色模式。有关用于地图等的一些常见调色板的讨论,请参阅?image。如果您的地图数据具有不同土壤类型的离散数值范围,则可以使用一点缩放数学运算为每个类别应用不同的颜色。

答案 2 :(得分:0)

或者您可以使用优秀的ggplot2包。这具有geom_raster几何,它应该可以很好地处理您的数据。请注意,ggplot2要求其数据格式与矩阵不同,您可以使用melt包中的reshape2来执行此转换。另请参阅我对an earlier question的回答,该回答与您拥有许多相似之处。