You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R Plotly绘制3D椭圆适配PCA数据的问题排查

Plotly绘制PCA数据3D可视化的椭圆适配问题

我用Plotly绘制PCA数据的3D可视化时,散点图能正常生成,但添加区分类别的3D椭圆时遇到两个问题:

  • 椭圆默认以c(0,0,0)为中心,与实际数据中心不符
  • 椭圆颜色无法匹配对应散点的颜色

试过调整代码,也尝试用lm拟合计算椭圆,但都无效果,相关代码如下:

PC1 <- c(1.43, 1.20, 0.48, 0.95, -2.76, -2.53, 2.38, 6.37)
PC2 <- c (-1.46, -2.85, -2.08, -2.08, -1.50, -2.15, 0.87, -4.64)
PC3 <- c (0.08, 5.37, 1.39, 2.74, 0.06, 1.95, 0.90, -0.18)

CA <- data.frame(PC1, PC2, PC3)

PC1 <- c(40.12, 19.01, 20.63, 20.50, 30.39, 10.46, 9.07)
PC2 <- c(-2.47, -2.04, -0.46, -2.37, -0.39, 0.97, 0.15)
PC3 <- c(1.27, 1.75, 0.53, 1.16, 0.44, 1.79, -0.76)
CB <- data.frame(PC1, PC2, PC3) 

library(plotly)
library(rgl)

CA <- as.matrix(CA)
CB <- as.matrix(CB)

ellipseA <- ellipse3d(cov(CA))
ellipseB <- ellipse3d(cov(CB))

fig <- plot_ly()%>%
  add_trace(data = CA, x = CA[,1], y = CA[,2], z = CA[,3],
            type = "scatter3d", mode = 'markers', marker = list(size = 3), 
            text = rownames(CA))%>%

  add_trace(x=ellipseA$vb [1,], y=ellipseA$vb [2,], z=ellipseA$vb [3,], 
            type='mesh3d', alphahull = 0, opacity = 0.2)%>%


  add_trace(data = CB, x = CB[,1], y = CB[,2], z = CB[,3],
          type = "scatter3d", mode = 'markers', marker = list(size = 3), 
          text = rownames(CB))%>%
  add_trace(x=ellipseB$vb [1,], y=ellipseB$vb [2,], z=ellipseB$vb [3,], 
            type='mesh3d', alphahull = 0, opacity = 0.2)

fig

尝试过的椭圆计算代码:

fit <- lm(PC2 ~ PC3 + PC4, CA)

内容的提问来源于stack exchange,提问作者Raffaello

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 23:43:12