2017-02-09 31 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作爲矩陣(尺寸等於xy)。您還需要將z值分爲兩個單獨的表面層,一個用於橢球體的上半部分,另一個用於底部。我現在沒有時間去做所有這些,但是如果你遇到困難,我可以稍後再解決這個問題 – dww

+0

再次感謝你!我會試一試。有時候我覺得我的二維大腦不是爲所有這些三維數據處理而建立的。大聲笑 – Hao