2016-05-12 41 views
0

我有用二进制编码的栅格数据,并且我想使用rasterVis包中的levelplot来绘制数据,例如0值为绿色,1值为红色。我似乎无法找到如何为值指定颜色。使用电平图指定二进制数据的颜色

举个例子,

# create a matrix with 0s and 1s 
nr <- 21 
nc <- 11 
m <- matrix(sample(0:1, nr*nc, replace=TRUE), nr, nc) 
# plot the matrix 
colour <- c("green", "red") 
levelplot(m, col.regions=colour, margin = FALSE) 

的正常工作,并产生这种 Binary matrix

但是,如果我有这种情况发生是全0或全1矩阵,

m2 <- matrix(0, nr, nc) 
levelplot(m2, col.regions=colour, margin = FALSE) 
m3 <- matrix(1, nr, nc) 
levelplot(m3, col.regions=colour, margin = FALSE) 

我得到同样的情节,当我想要的是0值为绿色,1值为红色。

Matrix with only 0 or 1 values

如何指定这样的,如果它是0,它出来的绿色,如果它是1,它出来的红?

+0

'levelplot'不是基地R的部分请注明包名( s)你在你的问题中使用。 – lmo

+0

@lmo刚才在 –

+0

中加入了我目前无法访问此软件包,所以我无法测试任何内容,但是您可以尝试使用'ifelse'。也许col ='ifelse(0,“green”,“red”)'。无论如何,这种技术适用于R基地。查看帮助部分:'?levelplot'查看是否手动调整颜色类型。 – lmo

回答

0

你必须使用ratify作为分类变量来声明raster数据(见this example):

library(rasterVis) 

nr <- 21 
nc <- 11 
m <- matrix(sample(c(0, 1), nr * nc, replace=TRUE), nr, nc) 
r <- raster(m) 

r <- ratify(r) 
rat <- levels(r)[[1]] 
rat$code <- c(0, 1) 
levels(r) <- rat 


levelplot(r) 

binary raster