使用levelplot

时间:2016-05-12 10:17:35

标签: r matrix binary levelplot

我有以二进制编码的栅格数据,我想使用levelplot包中的rasterVis绘制数据,这样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,则为红色?

1 个答案:

答案 0 :(得分:1)

您必须使用ratifyraster数据声明为分类变量(请参阅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