使用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
相关产品推荐
相关产品推荐

