【问题标题】:Plot ellipse3d in R plotly?在R中绘制ellipse3d?
【发布时间】:2017-06-27 17:54:43
【问题描述】:

rgl 包含一个非常有用的函数ellipse3d,它可以返回一个覆盖3D 中95% 点的椭球体。然后可以在rgl::plot3d 中使用这个对象来绘制它。我的问题是,是否可以将ellipse3d 的输出转换为可以通过 js 绘图包(如 plotly)绘制的东西?

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)

那我该怎么做才能通过 plotly 绘制椭球?

【问题讨论】:

    标签: r plotly rgl r-plotly


    【解决方案1】:

    您可以从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)
    

    【讨论】:

    • 太棒了!!谢谢!
    • 请注意,为简单起见,我使用标记将椭圆绘制为云。如果您想改用add_surface,则必须首先将椭圆转换为不同的格式,其中包含 x 位置的向量、y 位置的向量、z 作为矩阵(维度等于 x 乘 y)。您还需要将 z 值拆分为两个单独的表面层,一个用于椭圆体的上半部分,一个用于底部。我现在没有时间做这一切,但如果你遇到困难,我可以稍后解决
    • 再次感谢您!我会试一试。有时我觉得我的二维大脑不是为所有这些 3-d 数据处理而构建的。大声笑
    猜你喜欢
    • 2018-10-28
    • 2014-12-27
    • 2016-08-07
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 2014-04-11
    • 2012-09-19
    相关资源
    最近更新 更多