2013-08-07 74 views
2

我在我的數據集樣本上計算了PCA並保留了前兩個分量向量。然後我計算了k = 3的前兩個分量的k均值聚類。 現在我需要繪製一個2D散點圖,其中前兩個特徵函數(來自PCA)和基於羣集組的顏色。我用散點圖完成了所有工作,但是當我看圖時,我無法區分哪些樣本是聚類的,因此我想將樣本標籤添加到散點圖中的點。 有人可以建議我該怎麼做?在二維散點圖中添加標籤(kmeans聚類)

tdata<-t(subdata) 
pca <- prcomp((tdata),cor=F) 
dat.loadings <-pca$x[,1:2] 
cl <- kmeans(dat.loadings, centers=3) 
pca1 <-pca$x[,1] 
pca2 <-pca$x[,2] 
plot(pca1, pca2,xlab="PCA-1",ylab="PCA-2",col=cl$cluster) 

謝謝

回答

3

這可以簡單地使用ggplot完成。我將使用mtcars數據,因爲我無法訪問您當前使用的數據集。無論如何,這個想法應該很清楚。

library(ggplot2) 
pca <- prcomp((mtcars),cor=F) 
dat.loadings <-pca$x[,1:2] 
cl <- kmeans(dat.loadings, centers=3) 
pca1 <-pca$x[,1] 
pca2 <-pca$x[,2] 
#plot(pca1, pca2,xlab="PCA-1",ylab="PCA-2",col=cl$cluster) 
mydf<-data.frame(ID=names(pca1),PCA1=pca1, PCA2=pca2, Cluster=factor(cl$cluster)) 
ggplot(mydf, aes(x=PCA1, y=PCA2, label=ID, color=Cluster)) + 
     geom_point() + geom_text(size = 4, colour = "black", vjust = -1) 

這會爲您提供每個數據點的名稱輸出。

Plot of the results

+0

非常感謝,作品非常漂亮! – ser2207860