4

我有带有分类值 (-1,0,1) 或一些具有偏斜分布的值的栅格对象,我想用 levelplot 绘制这些值。我希望负值的颜色与正值的颜色不同,0 附近的值的颜色为白色。我希望比例尺仅显示几个离散的步骤,因为我希望间距不等距离并且范围有时非常窄。我用

颜色键=列表(at=c(),标签=c())

将参数传递给 levelplot。这适用于比例,但实际值的颜色编码不等于比例显示的内容。如果我使用论点

at=c()

单独地,标度值和格子中的值是对应的。如果我labels=c()也独立添加,它们将不会显示在比例尺上,而只会显示在等高线处。所以我的问题:

如何标记我的比例,设置“at”,并让格子中的值同时与我的比例值相对应?以下是一些示例数据:

library(raster)
library(colorspace)
library(rasterVis)
X <- raster(nrow=10,ncol=10)
set.seed(1)
X[] <- rchisq(df=10,n=10*10)*c(1,-1)
X[X[]>0] <- X[X[]>0]+seq(1,100,length.out=length(X[X[]>0]))
Uniques <- cellStats(X,stat=unique)
Uniques.max <- max(Uniques)
Uniques.min <- min(Uniques)
Acol.regions <- colorspace::diverge_hsv(n=9)

如果我使用颜色键:

levelplot(X, col.regions = Acol.regions,colorkey=list(
  at=round(c(seq(Uniques.min,0,length.out=5)[-5],0,seq(0,Uniques.max,length.out=5)[-1]),2),
  labels=as.character(round(c(seq(Uniques.min,0,length.out=5)[-5],0,seq(0,Uniques.max,length.out=5)[-1]),2)*2)),
          margin=F)

我最终以正确的方式显示比例,但格子中的值颜色错误: 格子中的比例正确但值错误

如果我分别通过at=c(), labels=c()

levelplot(X, col.regions = Acol.regions,
  at=round(c(seq(Uniques.min,0,length.out=5)[-5],0,seq(0,Uniques.max,length.out=5)[-1]),2),
  labels=as.character(round(c(seq(Uniques.min,0,length.out=5)[-5],0,seq(0,Uniques.max,length.out=5)[-1]),2)*2),
          margin=F)

我最终在比例和格子中得到了相应的值,但不显示标签: 在此处输入图像描述

亲切的问候,埃里克

4

1 回答 1

4

解决了它:我at=c()两次陈述了这个论点。直接在 levelplot 中,然后在 colorkey-list 中

levelplot(X, col.regions = Acol.regions,at=round(c(seq(Uniques.min,0,length.out=5)[-5],0,seq(0,Uniques.max,length.out=5)[-1]),2),
          colorkey=list(
  at=round(c(seq(Uniques.min,0,length.out=5)[-5],0,seq(0,Uniques.max,length.out=5)[-1]),2),
  labels=as.character(round(c(seq(Uniques.min,0,length.out=5)[-5],0,seq(0,Uniques.max,length.out=5)[-1]),2)*2)),
          margin=F)

感谢任何可能尝试过的人。埃里克

于 2013-06-18T13:18:10.353 回答