2013-08-07 73 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