我正在对crunchbase数据集进行PCA,以分析每年的投资行为。我用R来做这个。我创建了2000年至2012年的情节。我需要做的是创建一个视频,最后显示投资者(以点表示)如何随时间推移。我正在使用k-means聚类并使用聚类进行着色。
这是我的问题: 每当我计算新年的pca和k-means聚类时,R都会以不同的颜色绘制聚类。
这就是我想要实现的目标: 保存2000年初的每个点(代表一家投资公司)的颜色,所以如果我计算未来几年的PCA,我会用2000年的相同颜色绘制该点。
棘手的部分: 多年来,我们增加了一些投资公司,我不想为这些年来增加的投资公司添加颜色。
这就是2001年的情节:
这只是为不同群集中的所有群集着色。但是不考虑2000年的点数颜色,所以我无法比较它。
以下是我使用的代码示例:
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")
答案 0 :(得分:0)
我不太了解你的问题:
如果你想保留第一个yerar的颜色,你只需要写col=fit1$cluster
,fit1
是第一个TimePoint的聚类分析。
因此,您需要在这些年中建立一个载体(例如,称为clus.col
),其中包含所有可用的公司。
问题在于您需要为每个颜色定义颜色,如果仅在第一年定义它,您可能会错过其中一些颜色(除非在第一年中展示了所有颜色)。
为每个绘图定义clus.col
后,您应该只使用出现在其上的个体的子集。