保存颜色绘制k-means群集以查看随时间的演变

时间:2017-03-07 14:17:15

标签: r plot k-means pca

我正在对crunchbase数据集进行PCA,以分析每年的投资行为。我用R来做这个。我创建了2000年至2012年的情节。我需要做的是创建一个视频,最后显示投资者(以点表示)如何随时间推移。我正在使用k-means聚类并使用聚类进行着色。

这是我的问题: 每当我计算新年的pca和k-means聚类时,R都会以不同的颜色绘制聚类。

这就是我想要实现的目标: 保存2000年初的每个点(代表一家投资公司)的颜色,所以如果我计算未来几年的PCA,我会用2000年的相同颜色绘制该点。

棘手的部分: 多年来,我们增加了一些投资公司,我不想为这些年来增加的投资公司添加颜色。

这是2000年的初始情节如下: enter image description here

这就是2001年的情节:

这只是为不同群集中的所有群集着色。但是不考虑2000年的点数颜色,所以我无法比较它。 enter image description here

以下是我使用的代码示例:

inv.mat <- cast(invtop[,1:4], investor_name~company_market, sum)
inv.names <- inv.mat$investor_name
inv.mat <- inv.mat[,3:29] 
inv.log <- log(inv.mat)
inv.log[inv.log == -Inf] <- 0
fit <- kmeans(inv.log, 4, nstart= 30)
pca <- prcomp(inv.log)
pca <- as.matrix(pca$x)
plot(pca[,2], pca[,1], pch = 16, cex = 1 ,col = fit$cluster,   xlab="Principal Component 1", ylab="Principal Component 2", main="VC firms")

1 个答案:

答案 0 :(得分:0)

我不太了解你的问题:

  • 你想保留你在第一个情节中的颜色吗? (是)
  • 多年来您的数据输入是否相同? (否)

如果你想保留第一个yerar的颜色,你只需要写col=fit1$clusterfit1是第一个TimePoint的聚类分析。

因此,您需要在这些年中建立一个载体(例如,称为clus.col),其中包含所有可用的公司。

问题在于您需要为每个颜色定义颜色,如果仅在第一年定义它,您可能会错过其中一些颜色(除非在第一年中展示了所有颜色)。 为每个绘图定义clus.col后,您应该只使用出现在其上的个体的子集。