2016-08-11 16 views
1

南アメリカに0から70の範囲の降水量フィールドがあります。私は0と12の間の値にしか興味がないので、フィールドをプロットしたいこの範囲内で、極端な色の値> 12で、私は12より大きいすべての値がその色であることを示す、先端を持っているカラーバーの凡例をしたい、このような何か:イメージプロットのために尖ったカラーバーを作成する方法 - R

Example with the color bar the way I want it

これを行う方法を知っている人はいますか?これまでのところ、長方形のカラーバー以外を作る方法は見つけられていません。

+3

私はあなたが作業例で...普通のカラーバーでそれを行っているだろうか私たちを見ることをお勧めしたいです。その後、改造が提案され、テストされる可能性があります。 –

+0

私は 'image.plot()'を使用すると、例えば、自動的に長方形のカラーバーを作成することを意味していました。 –

+0

'?image.plot'が返す:"指定されたパッケージとライブラリの 'image.plot'のドキュメントがありません: あなたは '?? image.plot' "を試すことができます(このコメントに返信している理由もわかりません。答えがあります。) –

答えて

5

1つのアプローチは、rect(),polygon()text()などのプリミティブ描画関数で実装された独自のカスタムカラーバープロット関数を作成することです。たとえば:

arrowedColorBar <- function(ylow,yhigh,xcenter,xwidth,nums,...,cols=rainbow(length(nums)+2L)) { 
    x1 <- xcenter-xwidth/2; 
    x2 <- xcenter+xwidth/2; 
    ys <- seq(ylow,yhigh,len=length(nums)+2L); 
    y1 <- ys[1L]; 
    y2 <- ys[2L]; 
    polygon(c(x1,xcenter,x2),c(y2,y1,y2),col=cols[1L]); 
    for (i in seq_along(nums)) { 
     y1 <- ys[i+1L]; 
     y2 <- ys[i+2L]; 
     if (i<length(nums)) rect(x1,y1,x2,y2,col=cols[i+1L]); 
     text(x2,y1,nums[i],pos=4L,...); 
    }; ## end for 
    y1 <- ys[length(ys)-1L]; 
    y2 <- ys[length(ys)]; 
    polygon(c(x1,xcenter,x2),c(y1,y2,y1),col=cols[length(cols)]); 
    invisible(); 
}; ## end arrowedColorBar() 

plot(c(-80,-40),c(-60,20),pch=NA,xlab='x',ylab='y'); 
arrowedColorBar(-60,10,-45,1.3,c(1,2,3,4,5,7,10,13,15),font=2L); 

enter image description here

+0

素晴らしい!どうもありがとうございました!私はこれを試み、あなたに知らせるでしょう。 –

+0

完璧に働いた、もう一度ありがとう! –

関連する問題