2016-05-18 3 views
1

Итак, я работал над графиком рассеяния для некоторых данных, которые у меня есть. Раньше я мог использовать функцию графика рассеяния, но теперь я не могу, и я не понимаю, что такое моя ошибка. Мои данные имеют 5 значений и столбец, который присваивает каждому кластер (я использовал k-средство в данном конкретном случае).Функция 3D Scatterplot в R с группами

closedmi uncertin certknow sourknow justknow fit3.cluster 
1 3.166667 6.125  2.571429 4.500  3.375  1 
2 3.666667 4.250  3.428571 4.000  4.750  2 
3 1.833333 5.750  1.428571 3.375  2.125  2 
4 3.500000 4.500  1.857143 4.250  3.125  3 

Я ищу, чтобы попытаться построить мои данные в 3-х измерениях с использованием первых трех основных компонентов и увидеть кластеры. Вот мой код, чтобы найти основные компоненты, а затем привязать столбец кластера к основным компонентам в новый фрейм данных.

#Find the 5 principal components of the data matrix 
pcdf <- princomp(pre2, cor=T, score=T) 
pre4 <- data.frame(pcdf$scores, cluster=fit3$cluster) 

#Making a 3D plot of the Solution 
scatter3d(pre4$Comp.1, pre4$Comp.2, pre4$Comp.3, groups=pre4$cluster, 
      surface=FALSE, grid=FALSE, ellipsoid=TRUE) 

Так попробуйте использовать scatter3d для построения лиц с использованием колонки кластера в качестве группировки фактора, и я в конечном итоге с ошибкой. Я использовал this source для кода, чтобы получить правильный синтаксис, но я все еще получаю ошибку.

Ошибка в scatter3d.default (pre4 $ Comp.1, pre4 $ Comp.2, pre4 $ Comp.3, группы = pre4 $ кластерные: группы переменных должны быть фактором

но это Есть. В кадре данных я могу вызвать столбец, используя pre4 $ cluster. Есть ли какая-то ошибка форматирования или синтаксиса, которую я не вижу? Я просто схожу с ума?

Мне удалось заставить это работать просто на прошлой неделе, и теперь я не могу. Я знаю, что могу использовать plot3d для получения визуализации, но мне нравится визуализация лучше, используя scatter3d, и я хотел бы иметь возможность использовать ее.

+2

Не уверен, что если вы правильно понять смысл сообщения об ошибке «... должно быть фактором». Вы попробовали 'pre4 $ cluster <- as.factor (pre4 $ cluster)'? Каков вывод 'class (pre4 $ cluster)'? – RHertel

+1

Спасибо !!! «As.factor (pre4 $ cluster)» - это то, что мне нужно. Результат «class (pre4 $ cluster)» является «символом», поэтому имеет смысл, почему функция не работает. –

ответ

0

Попробуйте это:

scatter3d(pre4$Comp.1, pre4$Comp.2, pre4$Comp.3, groups=as.factor(pre4$cluster), 
      surface=FALSE, grid=FALSE, ellipsoid=TRUE) 

Это позволит решить сообщение об ошибке в отношении факторов. Помимо этого, просто убедитесь, что ваш ведущий минор положительно определен.

enter image description here

Смежные вопросы