2017-01-02 10 views
1

plot3d()rglから使用して、データフレーム内のサンプルの3つの列を使用して3D散布図を作成しています。さらに、私はプロット内の点を色づけるために、私のデータフレームから4番目の列colorbyを使用しています(それぞれのサンプルはファクタ/レベルとして10,11,12などの値を取る)。R plot3d coloring

2Dプロットを作るためにplot()を使用して、私は、第palette(rainbow(3))設定し、col = colorbyplot()内はlegend()続きます。プロット、色と伝説は正常に動作します。

plot3d()の最後の部分を繰り返すと、色が混ざり、同じ色がplot()と同じ色に割り当てられません。さらに、legend3d("topright", legend = levels(colorby), col = rainbow(3))を使用して凡例を作成すると、2D凡例と同じように見えますが、3Dプロットでは彩色が間違っています。

どこが間違っていますか?前もって感謝します。

答えて

1

これは私には正しいよう:確かにうまく働いた

df <- data.frame(x=1:9, y=9:1, z=101:109, colorby=gl(3,3)) 
palette(rainbow(3)) 
plot(x~y, df, col = df$colorby) 
library(rgl) 
with(df, plot3d(x,y,z, col = colorby)) 
legend3d("topright", legend = levels(df$colorby), col = levels(df$colorby), pch=19) 
+0

。 'legend3d()'コードでは、 'col = levels(df $ colorby) 'を使うのとは違って、_different_と_incorrect_凡例を与える' col = 1:length(df $ colorby) 'を使用していました。どんな考え? – user334263

+0

これは2つの異なるベクトルです。なぜあなたはそれらが同じであると思いますか?あなたは1:9を、lukeAはc( "1"、 "2"、 "3")を返します。 2番目が文字ベクトルであるという事実は重要ではありません。それらが異なる値を含んでいるという事実はありません。 – user2554330

関連する問題