2017-11-28 20 views
2

image.plot機能は入力のカラースケールを自動的に生成します。例えば、だから20と同じイメージプロットのカラースケールを調整するR

library(fields) 
x <- 1:10 
y <- 1:15 
z <- outer(x, y, "+") 
image.plot(x, y, z) 

この enter image description here 今は0から20の範囲にカラースケールを調整するような図形を生成し、及び20の必要以上の任意の値を着色します私はzlim=c(0,20)を関数のパラメータに追加しました。 enter image description here zlimは制限を超えた値には色が割り当てられませんでしたが、問題があります。これをどうすれば解決できますか?この場合、右上隅を暗い赤色に、つまり色の範囲の最後から割り当てたい色にします。

+0

調整カラースケールのいくつかの種類が必要とされているように思えます。範囲[0,20]に直線部分があり、範囲[20,30]に平坦部分があります。 – Heikki

+0

ハードコアコードが必要ですか?いくつかの関数(例えばspplot)では、範囲は[20、Inf]に設定することができます。これは非常に便利です。@ Heikki – uPhone

+0

ハードコアの一種ですが、色のスケールを調整することは非常に一般的ですExcelの例。実際、おそらく他の機能が役に立つかもしれません。あなた自身が答えを見つけた場合は、あなた自身の質問に自分自身で答えることを躊躇せず、正しい答えをマークしてください。 – Heikki

答えて

0

image.plotでこれを達成するには、z[z > 20] <- 20を使用できます。

library(fields) 
x <- 1:10 
y <- 1:15 
z <- outer(x, y, "+") 
z[z > 20] <- 20 
image.plot(x, y, z) 

enter image description here

+0

これを回避するスマートな方法。 – uPhone

0

私は、格子パッケージからレベルプロット関数を使って1つの解決策を得ることができます。これはimage.plotまたはfilled.contourを使用することによって達成することができるならば、結果がどのように見える

grid=expand.grid(x=x,y=y) 
grid$z=as.vector(z) 
levelplot(z~x*y,grid,at=c(seq(0,20,length.out = 50),Inf),col.regions = tim.colors(n = 64)) 

enter image description here

はしかし、私はまだだろうか。 levelplotは、基本的なプロットを追加しようとすると面倒です。

関連する問題