2013-06-18 152 views
2

我有光栅对象,具有分类值(-1,0,1)或某些具有倾斜分布的值,我想用levelplot绘制。我希望负值具有不同的颜色,而不是正值,白色的值是0左右。我希望比例尺只显示几个不连续的步骤,因为我希望间距非等距,而且范围有时非常窄。我用levelplot:如何调整标度级别(at)和刻度标签(标签)

的colorkey =列表(在= C(),标签= 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

亲切的问候, 埃里克

回答

2

解决了这个问题:我说的at=c()参数两次。一旦直接在水平图上,然后在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) 

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