如何根据需要在文件中表示某些值?

时间:2013-03-31 12:12:00

标签: r raster

我有一个光栅文件(1440 * 720行)包含值1,2和3。 当我绘制文件时,我得到了三种颜色的地图,但我不知道哪个是哪个。 我怎样才能按照我的意愿放置这些颜色:

   1=red
   2=blue
   3=green

代码:

pvm <- file("C:\\User_sm-das.bin","rb")
cor1<- readBin(pvm, numeric(), size=4,  n=1440*720, signed=TRUE)
r <-raster(t(matrix((data=cor1), ncol=720, nrow=1440)))
image(r)

2 个答案:

答案 0 :(得分:3)

您可以使用image.plot中的fields为图片添加图例。这是一个例子:

首先我生成一些数据:

set.seed(1234)
x<- 1:5; y<- 1:5
z<- matrix(sample(c(1,2,3),25,rep=TRUE),ncol=5,byrow=TRUE)

然后使用fields,您可以使用image参数添加图例。

# fields 
library(fields)
image.plot(x,y,z,col = c("blue" , "red" ,"yellow"),
           interpolate=TRUE) 

enter image description here

请注意,如果您想将光栅矩阵转换为颜色矩阵,可以执行以下操作:

## raster 
r <- raster(ncol=5, nrow=5)
values(r) <- z
mm <- matrix(c("blue" , "red" ,"yellow")[values(r)],
             ncol=5,byrow=TRUE)

     [,1]     [,2]   [,3]   [,4]     [,5]    
[1,] "blue"   "red"  "red"  "red"    "yellow"
[2,] "red"    "blue" "blue" "red"    "red"   
[3,] "yellow" "red"  "blue" "yellow" "blue"  
[4,] "yellow" "blue" "blue" "blue"   "blue"  
[5,] "blue"   "blue" "blue" "blue"   "blue"  

问题image您无法绘制需要数字值的矩阵颜色。但您可以使用grid.raster包中的grid

library(grid)
grid.raster(mm,interpolate=FALSE)

编辑

要手动修复图例,您可以使用axis.args

plot.image参数进行播放
   ## fields 
image.plot(x,y,z,
           col = c("red" , "green" ,"blue"),
           axis.args=list( at=0:3, labels=0:3 )) 

答案 1 :(得分:0)

使用RaterLayer'r',你可以做情节(r)来获得情节和传奇