2017-11-23 9 views
1

以下のようなカラーキーを作成することは可能ですか? (これは、ソフトウェアグリッド分析と表示システム - Gradsから来ます)。レベルプロットの色の範囲と極限

  1. シーケンスはしかし、それは200よりも大きな
  2. 値はグレー/値であるかのように表示されている非直線的である:

    enter image description here

    私はRで再生することができない2つの機能があります。 0より小さい白いです

私は格子レベルプロットを使用してラスタをプロットするrastervisからlevelplotを使用しています:

require(raster) 
require(rasterVis) 

set.seed(200) 

X = seq(-40,0,by=1) 
Y = seq(-60,-40,by=1) 
grid = expand.grid(list(X=X,Y=Y)) 
Z = rnorm(nrow(grid),mean=10,sd=100) 

data = data.frame(grid,Z) 
r = rasterFromXYZ(data) 
mapTheme <- rasterTheme(region=c('#EEF7FA','#D6F8F7',"#BEDAFF",'#5DA4FF',"#0000FF","#D4F9E2","#00FF7F","#008000","#FFFF00","#FFD27F", "#FFB732" ,"#EE7600", 
           "#D53E4F","#FF6A6A")) 
my.at = c(0,1,5,10,15,20,25,30,40,50,75,100,150,200) 
myColorkey <- list(at=my.at, 
        space="bottom", 
        labels=list(at=my.at)) 
p=levelplot(r, par.settings=mapTheme,at = my.at, colorkey=myColorkey,margin=F) 
print(p) 

結果:

enter image description here

あなたは0より小さい値と大きなより200が白、共に、見ることができるように、私はよりより大きいか小さい値を設定する方法をさっぱりだが特定の色として表示される特定の値。 Moroverでは、カラーキーの連続した太いマークの間隔を同じにすることはできますが、間隔は同じではありませんか?

答えて

4

これは非線形配列について等しいサイズ間隔の回避策である:

library(raster) 
library(rasterVis) 

set.seed(200) 
X = seq(-40,0,by=1) 
Y = seq(-60,-40,by=1) 
grid = expand.grid(list(X=X,Y=Y)) 
Z = rnorm(nrow(grid),mean=10,sd=100) 

data = data.frame(grid,Z) 
r = rasterFromXYZ(data) 
mapTheme <- rasterTheme(region=c('#EEF7FA','#D6F8F7',"#BEDAFF",'#5DA4FF',"#0000FF","#D4F9E2","#00FF7F", 
           "#008000","#FFFF00","#FFD27F", "#FFB732" ,"#EE7600", "#D53E4F","#FF6A6A")) 

my.at=c(0,1,5,10,15,20,25,30,40,50,75,100,150,200) 
my.brks=seq(0, 200, by=15) 

myColorkey <- list(at=my.brks, labels=list(at=my.brks, labels=my.at), space="bottom") 
p=levelplot(r, par.settings=mapTheme, at=my.at, colorkey=myColorkey, margin=F) 
print(p) 

enter image description here

これは200 0より小さく、大きな値のための溶液であってもよい:

library(raster) 
library(rasterVis) 

set.seed(200) 
X = seq(-40,0,by=1) 
Y = seq(-60,-40,by=1) 
grid = expand.grid(list(X=X,Y=Y)) 
Z = rnorm(nrow(grid),mean=10,sd=100) 

data = data.frame(grid,Z) 
r = rasterFromXYZ(data) 
mapTheme <- rasterTheme(region=c('white','#EEF7FA','#D6F8F7',"#BEDAFF",'#5DA4FF',"#0000FF","#D4F9E2","#00FF7F", 
           "#008000","#FFFF00","#FFD27F", "#FFB732" ,"#EE7600", "#D53E4F","#FF6A6A", "gray")) 
max(values(r)) 
min(values(r)) 

my.at=c(min(values(r)), 0,1,5,10,15,20,25,30,40,50,75,100,150,200, max(values(r))) 
my.brks=seq(0, 200, by=13) 

myColorkey <- list(at=my.brks, labels=list(at=my.brks, labels=c(-276,0,1,5,10,15,20,25,30,40,50,75,100,150,200, 388)), space="bottom") 
p=levelplot(r, par.settings=mapTheme, at=my.at, colorkey=myColorkey, margin=F) 
print(p) 

enter image description here

あなたの色が明から暗に進まない。 RColorBrewerパッケージを使用してこれを修正することができます。

library(RColorBrewer) 
reds = brewer.pal(5, "YlOrRd") 
greens = brewer.pal(3, "Greens") 
blues = brewer.pal(5, "Blues") 
mapTheme <- rasterTheme(region=c('white', blues, greens, reds, "gray")) 

enter image description here

+0

これは私が探していたまさにです、ありがとうございました。私は本当に色のアドバイスを感謝します! –