-2

我有一个光栅文件(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)
4

2 回答 2

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) 

在此处输入图像描述

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

## 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.rastergrid包中使用:

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 )) 
于 2013-03-31T13:17:54.557 回答
0

使用 RaterLayer 'r',您可以执行 plot(r) 来获取绘图和图例

于 2013-04-03T05:05:43.720 回答