在三个类别(即总共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)
如上所述,我应该如何正确地绘制和着色此主成分分析?谢谢。
答案 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