改变色标R.

时间:2014-07-08 11:20:27

标签: r plot raster

我正在使用以下代码打印从矩阵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)

我得到的是一个非常普遍的色标(我无法发布任何图像),但我想要的是一个色标,中间值周围有更多颜色,极端值只有一两种颜色..

任何人都可以帮助我吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

我在我的代码中完成了这一点。我使用rainbow函数,并在startend参数(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个最重要的值分配更大范围的颜色,以便轻松区分它们。