R levelplot:如何调整缩放级别(at)&;缩放标签(标签)

R levelplot:如何调整缩放级别(at)&;缩放标签(标签),r,levelplot,R,Levelplot,我有分类值(-1,0,1)的光栅对象,或者有一些分布扭曲的值,我想用levelplot进行打印。我希望负值的颜色与正值的颜色不同,0左右的值为白色。我希望比例仅显示几个离散的步骤,因为我希望间距不等距,并且范围有时非常窄。我用 colorkey=list(at=c(),labels=c()) 将参数传递给levelplot。这适用于刻度,但实际值的颜色编码不等于刻度显示的颜色。如果我用这个论点 at=c() 仅比例值和晶格中的值是对应的。如果我单独添加labels=c(),它们将不会显示在比例上

我有分类值(-1,0,1)的光栅对象,或者有一些分布扭曲的值,我想用levelplot进行打印。我希望负值的颜色与正值的颜色不同,0左右的值为白色。我希望比例仅显示几个离散的步骤,因为我希望间距不等距,并且范围有时非常窄。我用

colorkey=list(at=c(),labels=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)
我最终以正确的方式显示比例,但晶格中的值颜色错误:

如果我单独传递at=c(),labels=c():

最后,在比例和晶格中显示相应的值,但不显示标签:

亲切问候,,
Eric

解决了这个问题:我两次陈述了
at=c()
参数。一次直接在levelplot中,然后在colorkey列表中

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)

感谢所有可能尝试过的人。Eric

我的问题是如何获得更平滑的缩放
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)
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)