Создайте 3D PCA, используя Kmean с точками, помеченными - PullRequest
0 голосов
/ 11 сентября 2018

Я хочу сделать приведенный ниже график для mtcars dataset . enter image description 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) 

Код работает до сих пор и выдает два графика, как показано ниже: plot1 plot2

Используя код, приведенный ниже, график был создан, но были проблемы в графике:

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))

plot4

Шкала неверна, она перекрывается, как показано на графике, шкала для pc1 переместилась выше, и аналогично pc2 и pc3 перекрываются, как эти проблемы можно устранить, чтобы масштабировать дляpc1, pc2 и pc3 напечатаны в нужном месте?

1 Ответ

0 голосов
/ 11 сентября 2018

Возможно, вы захотите поиграть с параметрами aspect, adjust, cex или использовать 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)))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...