2016-03-31 17 views
0

私はRでプロットを作成しました。多くの異なる色で、私の23のカテゴリーのどれが属しているかを示しています。点の色は、ベクトル(層数23レベルの因子である層)によって加算されます。Rプロットの凡例が点に応じた色を表示していない

凡例を追加して、色とそのカテゴリを表示しようとすると、一致しないようです(下図参照)。

これは私のプロットコードです:ここで

plot(pca_nmdsscores, type = "n") 
points(pca_nmdsscores, col=stratumcol, cex=1.5, pch = 15) 
legend("right","top",levels(stratumcol),cex=.8, col = as.numeric(stratumcol), pch =15, lty = 0) # pch = stratumcol 
ordihull(pca_nmdsscores, groups = stratumcol,draw = "polygon", col ="purple",label = T, show.groups = "LateMoistRich") 
ordihull(pca_nmdsscores, groups = stratumcol,draw = "polygon", col ="blue",label = T, show.groups = "MidWetPoor") 

私Rplotが表示されるはずです。ご覧のように、私のカテゴリー「MaleMoistRich」はポイントをピンク・アイ・カラーで結んでいますが、伝説ではこのカラーの名前は「MidMoistRich」です。

"MidWetPoor"と同じ、ミッドブルーポイントを接続し、この色は "LateMoistPoor"を示します。

この問題を解決するにはどうすればよいですか?

私はソリューションを探してみましたが、それを解決することはできませんでした - 私のパレットは23色で定義されているので何も変わらないので、それらをリサイクルする必要はありませんとにかく)

[伝説やポイントの色を示すRからプロット、] [1]

[OK]を - 私は初心者だので、私は...

を私のプロットの画像をアップロードすることはできませんしかし、代わりにこちらをご覧ください:http://i.stack.imgur.com/pzn2y.png

/ありがとうs

編集: 解決策は、私の要素にレベル()を使用しないことでした。凡例=レベル(階層数)でも、レベル=階層(階層数)でもありません。 Richard and DeveauPは、レベルが問題かもしれないと示唆しました。

これは新たな問題を作り出しました。私のlegenはレベルだけでなく、元の問題であった正しいポイントカラーに対応する色を表示しました。

この新しい問題は、 "levels()"ではなく "unique()"を使用して解決しました。

legend("Right","top",legend=unique(stratumcol), cex=.8, col = unique(stratumcol), pch=15, lty=0) 

私は解決策

+0

を試しました(数値1は必ずしも最初の要素ではありません)。 as.numericを削除するとどうなりますか? – DeveauP

+0

これは何も変わりません。私はそれを試して修正するためにそれを追加しました - それはどちらでもなかった:) – AAL

+1

あなたの凡例の使用に問題があるかもしれません。 stratumcolが因子の場合、as.numeric()は色ではなく因子コードを返します。また、as.numeric(stratumcol)は、level()に対応する順序ではなく、その順番どおりにベクトルを与えます。 –

答えて

1

が、私はこれが要因と比べて順序を変更することができる、あなたは伝説の "COL = as.numeric(stratumcol)" を入れていることがわかり

legend("right","top",legend = levels(stratumcol),cex=.8, col = levels(stratumcol), pch =15, lty = 0) 
+0

私がしたことは、問題を解決した "levels()"を削除することでしたが、新しいレベルを引き起こしました - > 23レベルを1回だけ表示する伝説ではなく、 ### @リチャードテルフォードのよ​​うに解決しようとしましたが、col = levels(stratumcol)を追加すると「invalid colorname 'EarlyDryPoor'」というエラーが返され、凡例は表示されません。 – AAL

+0

私はファクタコラムに表示される順番に基づいて凡例を手動で定義する必要がありますが、私のすべての要因についてはそうしていません... – AAL

+0

あなたのデータがどのように整理されているか誤解しています。どのように色を指定しましたか?パレットで?もしそうなら、col = 1:23が動作します。 –

関連する問題