如何将数字映射到颜色?
我正在试图将此文件(无符号字符,像素= 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)
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
可以 的rasterVis
package的levelplot
方法来显示。
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)
编辑:levelplot
使用lattice
图形,而plot
使用 base
图形。它们不能一起使用(除非您使用 gridBase
包)。但是,可以使用 latticeExtra
程序包中的+.trellis
和layer
函数轻松地覆盖其他 信息。由于wrld_simpl
是 SpatialPolygonsDataFrame
您可以使用sp
包中的sp.polygons
函数 对其进行绘制。
library(maptools) ## needed for wrld_simpl
data(wrld_simpl) ## a SpatialPolygonsDataFrame
levelplot(r, col.regions=myPal) +
layer(sp.polygons(wrld_simpl, lwd=0.5))
@ZadSim对不起,但我不明白你的意思是“k”。 – 2013-04-29 09:38:36
@ZadSim我已经添加了一个额外的块代码来解决这个问题。 – 2013-04-29 20:07:39
首先,因为所有的数据是数字和量化。
现在,R
中有许多内置颜色模式。有关用于地图等的一些常用调色板的讨论见?image
。如果您的地图数据对于不同的土壤类型具有离散的数值范围,则使用小比例数学可以为每个类别应用不同的颜色。
或者你可以使用优秀的ggplot2软件包。这有geom_raster
几何,它应该适用于您的数据。请注意,ggplot2
要求其数据的格式与矩阵不同,可以使用reshape2
包中的melt
执行此转换。另请参阅我对an earlier question的回答,它与您拥有很多相似之处。
在你的问题y不是栅格图层。 – 2013-04-25 14:20:13
通常,可以扩展您的值代入[0,1]然后,通过颜色的数量乘以-1的那些(具有1至避免0的索引),并用它来索引变成颜色。对于图像来说,这样会更容易一些,因为您可以使用image()的间隔和cols参数。 – mdsumner 2013-04-25 23:27:45