我正在使用以下代码打印从矩阵r
创建的栅格m
r <- t(raster(m))
extent(r) <- c(-180, 180, -90, 90)
setcol <- unlist(m)
setcol[is.na(setcol)] <- 0
length_val<-floor(max(setcol) - min((setcol)))
colorscale <- colorRampPalette(c("blue","green","yellow","red"), space="Lab")(length_val)
x.scale <- list(cex=1.5,font=2)
y.scale <- list(cex=1.5,font=2)
graph <- levelplot(r, margin=FALSE ,xlab=list("",cex=1.5),ylab=list("",cex=1.5),main = list(title,cex=2),col.regions=colorscale,
colorkey=list(labels=list(cex=1)),
panel = function(x, y, ...) {
panel.levelplot(x, y, ...)
mp <- map("world", plot = FALSE, fill=FALSE,interior = FALSE)
lpolygon(mp$x, mp$y, fill=FALSE, col="white")},
scales=list(x=x.scale, y=y.scale)
)
print(graph)
我得到的是一个非常普遍的色标(我无法发布任何图像),但我想要的是一个色标,中间值周围有更多颜色,极端值只有一两种颜色..
任何人都可以帮助我吗?
非常感谢
答案 0 :(得分:1)
我在我的代码中完成了这一点。我使用rainbow
函数,并在start
和end
参数(0..1内)中为每组值指定所需的间隔:
colors <- c(rainbow(length(levels) - 14, start = 0.78, end = 0.8, s = 0.5),
rainbow(14, start = 0.45, end = 0.75))
通过这种方式,我可以为14个最重要的值分配更大范围的颜色,以便轻松区分它们。