2017-10-13 11 views
1

Rでは、データが0の周りにあり、データが1周ぐらいの場合、低い色を区別するために熱色を「再スケーリング」したいと思っています。これは虹の方法で行う必要があります。 "離散的な色"を望ましくない。私はimage.plotの中断を試みたが、うまくいきませんでした。 カラーパレットをrに調整する

image.plot(X,Y,as.matrix(mymatrix),col=heat.colors(800),asp=1,scale="none") 

は、私が試した:

lowerbreak=seq(min(values),quantile2,len=80) 
    highbreak=seq(quantile2+0.0000000001,max(values),len=20) 
    break=c(lowerbreak,highbreak) 
    ii <- cut(values, breaks = break, 
      include.lowest = TRUE) 

    colors <- colorRampPalette(c("lightblue", "blue"))(99)[ii] 
+0

多分色を補間する '?colorRamp'。 –

+0

私は試みましたが、私は低い値を区別するためにどのようにすればよいのか理解できません – gdlzzzz

答えて

1

colorRampPaletteを使用して、あなたが低い(または高い)の値を強調するためにbias引数を設定することができます。

colorRampPalette(heat.colors(100),bias=3)」のようなものは、下に「ランプ」を合わせると視覚的に区別しやすくなります。

+0

シャドウなしですべての色のランプを黄色にする – gdlzzzz

2

「スカッシュ」ライブラリを使用するアプローチは次のとおりです。 makecmap()では、色の値と区切りを指定し、baseパラメーターを使用してログの伸張を指定することもできます。ちょっと複雑ですが、きめ細かな制御が可能です。私は歪んだデータを色付けするために使用します。ここでは、「ローエンド」でより多くの定義が必要です。

虹色のパレットを実現するために、組み込みの「ジェット」カラー関数を使用しましたが、任意のカラーセットを使用できます。「colorRampPalette」でグレースケールランプを作成する例を示します。

どのようなランプを使用しても、データに最適化するためにはbase値で再生することができます。

install.packages("squash") 
library("squash") 

#choose your colour thresholds - outliers will be RED 
minval=0 #lowest value to get a colour 
maxval=2.0 #highest value to get a colour 
n.cols=100 #how many colours do you want in your palette? 
col.int=1/n.cols 

#create your palette 
colramp=makecmap(x=seq(minval,maxval,col.int), 
       n=n.cols, 
       breaks=prettyLog, 
       symm=F, 
       base=10,#to give ramp a log(base) stretch 
       colFn=jet, 
       col.na="red", 
       right=F, 
       include.lowest=T) 

# If you don't like the colFn options in "makecmap", define your own! 
# Here's an example in greyscale; pass this to "colFn" above 
user.colfn=colorRampPalette(c("black","white")) 
関連する問題