【问题标题】:Create a 3D pca using Kmean with points labelled使用带有标记点的 Kmean 创建 3D pca
【发布时间】:2018-09-11 06:16:11
【问题描述】:

我想在mtcars dataset. 上绘制下面给出的图。

为此,我尝试了here 给出的代码,如下所示:

require(rgl)
require(SciViews)
require(plotrix)
library(corrplot)
require(ggplot2)
require(reshape)
require("gridExtra")
cars.pca <- pcomp(~mpg+cyl+disp+hp+drat+wt+qsec, data = mtcars)#,  subset = -(8:14))
mtcars_pca = cbind(cbind(mtcars, cars.pca$scores), car = rownames(mtcars))
plot(cars.pca, which = "correlations") 
plot(cars.pca, which = "scores", cex = 0.8) 

代码在此处运行良好,并生成两个图,如下所示:

使用下面给出的代码制作了情节,但情节中有问题:

k <- kmeans(mtcars, 5, nstart=25, iter.max=1000)
new = cbind(mtcars_pca,cluster = k$cluster)
with(new,plot3d(PC1,PC2,PC3, col=k$cluster, size=2, type='s'))
car= = rownames(mtcars)
with(new,text3d(PC1,PC2,PC3,car))

比例不正确,如图所示重叠,pc1 的比例移到上方,同样 pc2 和 pc3 重叠,如何消除这些问题,以便打印 pc1、pc2 和 pc3 的比例对的地方?

【问题讨论】:

  • 你有两个非常简单的错误:new = cbind(mtcars_pca,cluster = k$cluster)with(new,text3d(PC1,PC2,PC3,car))
  • 不是对象,是mtcars_pca(car = rownames(mtcars))的列。
  • 有多种选择,但我建议您咨询pca3dellipse3d(来自rgl 包)。
  • 我已经编辑了问题。

标签: r pca


【解决方案1】:

您可能想使用参数aspectadjustcex 或使用jitter 来查找最小化文本重叠的值:

with(new,plot3d(PC1,PC2,PC3, col=k$cluster, size=2, type='s', aspect=c(3,1,3)))
car= rownames(mtcars)
with(new,text3d(jitter(PC1),jitter(PC2),jitter(PC3),car,cex=0.7, adjust=c(0.5,0.9)))

【讨论】:

  • 但情节令人困惑,这个情节中的pc1、pc2和pc3在哪里?
  • PC1 轴水平,PC3 轴垂直,PC2 垂直于 PC1 和 PC3。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 2014-11-23
  • 1970-01-01
  • 2019-11-26
  • 1970-01-01
相关资源
最近更新 更多