2017-02-09 16 views
1

パッケージrglには、非常に便利な機能​​が含まれています。これは、3Dのポイントの95%をカバーする楕円を返すことができます。次に、このオブジェクトをrgl::plot3dで使用してプロットすることができます。私の質問は、​​の出力をプロットするようなjsプロットパッケージを通じてプロットできるものに変換することが可能なのでしょうか?ellipse3dをプロットしてプロットしますか?

library(rgl) 
dt <- cbind(x = rnorm(100), y = rnorm(100), z = rnorm(100)) 
ellipse <- ellipse3d(cov(dt)) 
plot3d(dt) 
plot3d(ellipse, add = T, color = "red", alpha = 0.5) 

次に、楕円をプロットしてプロットするにはどうすればよいですか?

答えて

2

ellipse$vbから楕円の座標を抽出することができます。次に、これらをプロットします。以下のような何か:

p <- plot_ly() %>% 
    add_trace(type = 'scatter3d', size = 1, 
    x = ellipse$vb[1,], y = ellipse$vb[2,], z = ellipse$vb[3,], 
    opacity=0.01) %>% 
    add_trace(data=dt, type = 'scatter3d', x=~x, y=~y, z=~z) 

enter image description here

+0

素晴らしい!!ありがとう! – Hao

+1

簡単にするため、マーカーを使用して楕円を雲としてプロットしました。代わりに 'add_surface'を使用したい場合は、まず、楕円をx位置のベクトル、y位置のベクトル、z行列(xはyに等しい次元)で別の形式に変換する必要があります。また、z値を楕円の上半分と下半分の2つの別々の表層に分割する必要があります。私は今すべてこれを行う時間がありませんが、あなたが立ち往生した場合は、後でこれを解決することができます – dww

+0

もう一度ありがとう!私はそれを試してみましょう。時々、私は、これらの3次元データ処理のために私の二次元の脳が構築されていないように感じます。笑 – Hao

関連する問題