绘制两个主要成分得分向量,使用不同的颜色来指示三个唯一的类

时间:2016-10-28 00:06:54

标签: r plot pca

在三个类别(即总共60个观察值)和50个变量中生成一个模拟数据集,其中包含20个观测值,我需要绘制前两个主成分得分向量,使用不同的颜色来表示三个唯一类。

我相信我可以创建模拟数据集(请验证),但我在解决如何为类和颜色着色问题时遇到了问题。我需要确保三个类在图中分开显示(或者我需要重新运行模拟数据)。

#for the response variable y (60 values - 3 classes 1,2,3  - 20 observations per class)
y <- rep(c(1,2,3),20)

#matrix of 50 variables i.e. 50 columns and 60 rows i.e. 60x50 dimensions (=3000 table cells)   
x <- matrix( rnorm(3000), ncol=50)

xymatrix <- cbind(y,x)
dim(x)
[1] 60 50
dim(xymatrix)
[1] 60 51
pca=prcomp(xymatrix, scale=TRUE)

如上所述,我应该如何正确地绘制和着色此主成分分析?谢谢。

2 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题,ggparcoord包中的Gally会对您有所帮助。

library(GGally)
y <- rep(c(1,2,3), 20)

# matrix of 50 variables i.e. 50 columns and 60 rows 
# i.e. 60x50 dimensions (=3000 table cells)   
x <- matrix(rnorm(3000), ncol=50)

xymatrix <- cbind(y,x)
pca <- prcomp(xymatrix, scale=TRUE)

# Principal components score and group label 'y'
pc_label <- data.frame(pca$x, y=as.factor(y))

# Plot the first two principal component scores of each samples
ggparcoord(data=pc_label, columns=1:2, groupColumn=ncol(pc_label))

但是,我认为在x而不是包含目标xymatrix的{​​{1}}上执行PCA会更有意义。因此,在您的情况下,以下代码应该更合适。

y

如果您想要前两个主成分得分的散点图,可以使用pca <- prcomp(x, scale=TRUE) pc_label <- data.frame(pca$x, y=as.factor(y)) ggparcoord(data=pc_label, columns=1:2, groupColumn=ncol(pc_label)) 来完成。

ggplot

答案 1 :(得分:1)

这是一个基础R解决方案,以显示如何简单地完成此操作。首先只在jQuery(document).ready(function($) { var alertArr = $(".alert-container .alert"); var alertTime = 6500; var visibleAlert = 0; var animationEnd = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend'; // loop through array of alerts function loopAlerts(){ if(visibleAlert < alertArr.length ) { animateAlert(visibleAlert); visibleAlert++ } else { visibleAlert = 0; animateAlert(visibleAlert); visibleAlert++ } } // alert slideInDown > wait 3s > slideOutDown function animateAlert(visibleAlert){ var alert = alertArr[visibleAlert]; $(alert).addClass('slideInDown').removeClass('hide').one(animationEnd, function(){ $('.minor-alerts .marquee .alert').removeClass('slideInDown slideOutDown'); setTimeout(function(){ $(alert).addClass('slideOutDown').one(animationEnd, function(){ $(alert).addClass('hide').removeClass('slideOutDown slideInDown'); }); }, 3000); }); } setInterval(loopAlerts, alertTime); }); 矩阵上执行PCA,然后从结果对象中获取我们称之为x的变换变量矩阵。

PCs

现在,我们可以根据您的x <- matrix(rnorm(3000), ncol=50) pca <- prcomp(x, scale=TRUE) PCs <- as.matrix(pca$x) 为标签制作颜色名称的矢量。

y

现在只绘制一个散点图,将颜色矢量传递给col.labs <- rep(c("Green", "Blue", "Red"), 20)

col

enter image description here