levelplot:如何调整比例水平(at)&刻度标签(标签)

时间:2013-06-18 10:12:55

标签: r levelplot

我的栅格对象具有分类值(-1,0,1)或某些具有偏斜分布的值,我想用levelplot绘制。我希望负值的颜色与正值的颜色不同,白色的颜色为0左右。我希望刻度只显示几个不连续的步骤,因为我希望间距非等距,范围有时非常窄。我用

  

colorkey = list(at = c(),labels = c())

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

  

在= 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)

如果我使用colorkey:

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)

我最终得到了显示比例的正确方法,但格子中的值被错误地着色: correct scale but wrong values in the lattice

如果我单独传递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)

我最终得到了比例和点阵中的相应值,但不显示标签: enter image description here

亲切的问候, 埃里克

1 个答案:

答案 0 :(得分:2)

解决了它:我说了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)

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