2017-06-09 5 views
1

image()関数を使用してRstudioでエトログラムを作成していますが、色がデータに対応していないことがあります。image()が正しく動作していないRのエトグラフプロット

私は、3つの状態の連続を含むベクトルを持っており、それぞれの状態を特定の色でプロットしたいと思います。

コードと前の計算は膨大なので、私は問題のある行を表示します。

Iは

> sub_input2$state_ind 
> [1] 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1 1 1 1 

、各状態の色を含むベクター(1->赤、2->グリーン、3->青)

> MWcluster.col 
>[1] "#8E0939" "#005900" "#0044A4" 
様 '動物の状態' のベクトルを有します

>image(as.matrix(sub_input2$state_ind),col=MWcluster.col[sub_input2$state_ind],axes=FALSE) 

そして、この出力 を得た:私は、次のコマンドを使用してプロット

私は

>image(as.matrix(sub_input2$state_ind),axes=FALSE) 

Here the color changes when needed

次驚くべきことに、いくつかのethogramsがこの間違った方法でプロットされてしまったが、いくつか他の人が行儀よく、1 Iとしてcol=パラメータを指定しない場合以下に示す。 col=を指定せずに

The first plot is supposed to look as this one

私はプロットすると

> sub_input2$state_ind 
> 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 

>image(as.matrix(sub_input2$state_ind), col=MWcluster.col[sub_input2$state_ind],axes=FALSE) 

は、私が要約として、その後、次の

> image(as.matrix(sub_input2$state_ind),axes=FALSE) 

enter image description here

を得ました。 image()でいくつかのベクトルをプロットすると、私は期待したものを得ましたが、col=パラメータを指定すると、他のベクトルが適切にプロットされません。何か案が?

ありがとうございます! imageの助けから

答えて

0


col = ようrainbowheat.colorstopo.colorsterrain.colors又は同様の機能によって生成されるような色のリスト。
したがって、colの長さは、プロットされる入力行列zの一意の値の数と等しくなければならず、z行列の長さではありません。
imageがどのように色をz値に割り当てるかを示すいくつかの例を示します。
我々はベクトル値を1とx、2、3と3色のベクトルcol考える:私たちはimageだけ 3色ののcolオプションに渡す最初の例では

x <- c(rep(1,5),rep(2,5),rep(3,5)) 
cols <- c("#8E0939", "#005900", "#0044A4") 

を。期待どおり、imageは、指定された色を使用してxのすべての値をプロットします。

我々は imageのみ色の colオプションに渡すと xベクトルの値1、2、3の順序を変更する第2の例では

enter image description here

par(mfrow=c(3,1)) 
image(z=as.matrix(x), col=col[1], axes=F) 
image(z=as.matrix(x), col=col[2], axes=F) 
image(z=as.matrix(x), col=col[3], axes=F) 
。この場合、 imageは1と2を colベクトルの最初の要素にマップし、3を2番目の要素にマップします。最後の例では

windows() 
par(mfrow=c(3,1)) 
x <- c(rep(1,5),rep(2,5),rep(3,5)) 
image(z=as.matrix(x), col=col[c(1,2)], axes=F) 
x <- c(rep(1,5),rep(3,5),rep(2,5)) 
image(z=as.matrix(x), col=col[c(1,2)], axes=F) 
x <- c(rep(3,5),rep(2,5),rep(1,5)) 
image(z=as.matrix(x), col=col[c(1,2)], axes=F) 

enter image description here

我々はimage 色のcolオプションに渡すとxベクターで1、2、3つの値の順序を変更します。プロットは、imageが値1をcolの最初の要素に、2を2番目の色に、3を3番目の色にマッピングすることを示しています。

par(mfrow=c(3,1)) 
x <- c(rep(1,5),rep(2,5),rep(3,5)) 
image(z=as.matrix(x), col=col, axes=F) 
x <- c(rep(1,5),rep(3,5),rep(2,5)) 
image(z=as.matrix(x), col=col, axes=F) 
x <- c(rep(3,5),rep(2,5),rep(1,5)) 
image(z=as.matrix(x), col=col, axes=F) 

enter image description here

私は、これはあなたを助けることができると思います。

+0

はい、どうもありがとう、私は変更した: '画像(as.matrix(sub_input2 $ state_ind)、COL = COLを[sub_input2 $ state_ind]、FALSE =軸)' に '画像( ' いくつかのことがうまくいくようになりましたが、少なくともすべての状態の変化はプロットされていますが、いくつかは間違った色が割り当てられています。 私のベクトルが状態(1,3)または(1,2,3)がうまく働くが、それらが(1,2)または(2,3)を含んでいるときに、あなたが説明したようにいくつかの色が「失敗」する。少なくとも今私はなぜこれが起きているのかを知っており、すべての作業を適切に行うためにこれを条件付きにすることができます。 本当にありがとうございます! –

+0

@ JaviChinaskiお願い、私の答えをupvoteすることを検討できますか?ありがとうございました。 –

関連する問題