2016-05-10 50 views
1

example of the 3D plot i got in result 23個の異なるグループがあり、それぞれ7〜20個の個別サンプル(合計約350〜400個の観測値) y & z座標。私は Rパッケージのplot3d機能によって私が持っているデータに基づいて3Dプロットを作りたいと思います。それは一般的に大したことではありません。問題は、上記の23グループのそれぞれを3Dプロット上で容易に区別できるようにしたいと思うことです。私はグループごとに異なる色を使用しようとしましたが、残念なことに人間の目の色で認識できる23の色を見つけることはできません。私はplotのようなRのライブラリのようなパラメータをpchと考えていました。しかし、再び、私が見ることができるように、plot3d関数にそのようなオプションはありません。また、データセットにあまりにも多くのポイントがあり、各ポイントにラベルを追加することについて説明しなければなりません(text3d rgl関数など)は良いアイデアではありません。 3Dプロット上の混乱)。それを理解する方法はありますか(それは非常に一般的な問題だと思います)?前もって感謝します!以下
は、より良い説明のためのいくつかのおもちゃの例のコードです:rgl Rパッケージのplot3d関数で生成された3Dプロットで数多くのグループを簡単に区別できるようにする

# generate data 

prefix=rep("ID",69) 
suffix=rep(1:23,3) 
suffix_2=as.character(suffix[order(suffix)]) 
titles_1=paste(prefix,suffix,sep="_") 
titles_2=titles_1[order(titles_1)] 
x=1:69 
y=x+20 
z=x+50 
df=data.frame(titles_2,x,y,z) 

# load rgl library 

library('rgl') 

# make 3D plot 

plot3d(x,y,z) 

答えて

3

あなたは出血の端に住んでいるような場合は、points()はベースのグラフィックスで をするのと同じコードを使用してシンボルを描画する新しい機能rgl::pch3d()があります。それはrgl 0.95.1475で、R-forgeで利用できます(Githubでは数時間以内、How do I install the latest version of rgl?参照)。それはまだ完全にrglwidget()で動作していません。

コード例は

open3d() 
i <- 0:25; x <- i %% 5; y <- rep(0, 26); z <- i %/% 5 
pch3d(x, y, z, pch = i, bg = "green") 
text3d(x, y, z + 0.3, i) 
pch3d(x + 5, y, z, pch = LETTERS[i+1]) 
text3d(x + 5, y, z + 0.3, i+65) 

(いくつかのサイズ変更及び回転後)、この表示を生成する:

enter image description here

1

それは完璧ではないのですが、どのようにグループを区別するために、文字に-Wを使用してはどうですか?

with(df,plot3d(x,y,z)) 
    with(df,text3d(x,y,z,texts=letters[titles_2])) 

enter image description here

+0

おかげで先端のため!それは今より良いです。 – Denis

+0

コメントはあなたに感謝の言葉として使われるべきではありません - もし答えが役に立つなら、upvoteそして/またはそれを受け入れます –

0

私は今のところ、このソリューションを使用する出版物のために3Dプロットを使用するつもりですので。それは最高のものであるとは思わない。

# generate data 

prefix=rep("ID",69) 
suffix=rep(1:23,3) 
suffix_2=as.character(suffix[order(suffix)]) 
titles_1=paste(prefix,suffix,sep="_") 
titles_2=titles_1[order(titles_1)] 
x=1:69 
y=x+20 
z=x+50 
df=data.frame(titles_2,x,y,z) 

# load rgl library 

library('rgl') 

# load randomcoloR library 

library(randomcoloR) 

# create a custom palette 

palette <- distinctColorPalette(23) 

palette(palette) 

# make 3D plot 

plot3d(x,y,z,size = 10,col=suffix[order(suffix)]) 

colored 3D plot

関連する問題