使用 levelplot 指定二进制数据的颜色
Specifying colours for binary data using levelplot
我有二进制编码的栅格数据,我想使用 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,它会显示为红色?
您必须使用 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)
我有二进制编码的栅格数据,我想使用 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,它会显示为红色?
您必须使用 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)