R 绘制两个主成分得分向量,使用不同的颜色表示三个唯一的类别

R 绘制两个主成分得分向量,使用不同的颜色表示三个唯一的类别,r,plot,pca,R,Plot,Pca,在生成一个模拟数据集,其中三个类别各有20个观察值(即总共60个观察值)和50个变量后,我需要绘制前两个主成分得分向量,使用不同的颜色来表示三个独特的类别 我相信我可以创建模拟数据集(请验证),但我在计算如何给类着色和绘图时遇到了问题。我需要确保这三个类在绘图中是分开的(否则我需要重新运行模拟数据) 响应变量y的#(60个值-3类1、2、3-每类20个观察值) y如果我正确理解了您的问题,Gally软件包中的ggparcoord将对您有所帮助 library(GGally) y <- re

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

我相信我可以创建模拟数据集(请验证),但我在计算如何给类着色和绘图时遇到了问题。我需要确保这三个类在绘图中是分开的(否则我需要重新运行模拟数据)

响应变量y的
#(60个值-3类1、2、3-每类20个观察值)

y如果我正确理解了您的问题,
Gally
软件包中的
ggparcoord
将对您有所帮助

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))

如果您想要前两个主成分分数的散点图,可以使用
ggplot
进行

library(ggplot2)

ggplot(data=pc_label) + 
  geom_point(aes(x=PC1, y=PC2, colour=y))

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

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))

如果您想要前两个主成分分数的散点图,可以使用
ggplot
进行

library(ggplot2)

ggplot(data=pc_label) + 
  geom_point(aes(x=PC1, y=PC2, colour=y))

下面是一个基本的R解决方案,来说明这是多么简单。首先,仅对
x
矩阵进行PCA,并从结果对象中获得转换变量矩阵,我们称之为
PCs

x <- matrix(rnorm(3000), ncol=50)
pca <- prcomp(x, scale=TRUE)
PCs <- as.matrix(pca$x)
现在只需以散点形式打印,将颜色向量传递到
col

plot(PCs[, 1], PCs[, 2], col=col.labs, pch=19, xlab = "Scores on PC1", ylab="Scores on PC2")

这里有一个基本的R解决方案,来说明这是多么简单。首先,仅对
x
矩阵进行PCA,并从结果对象中获得转换变量矩阵,我们称之为
PCs

x <- matrix(rnorm(3000), ncol=50)
pca <- prcomp(x, scale=TRUE)
PCs <- as.matrix(pca$x)
现在只需以散点形式打印,将颜色向量传递到
col

plot(PCs[, 1], PCs[, 2], col=col.labs, pch=19, xlab = "Scores on PC1", ylab="Scores on PC2")

你能提供创建当前绘图的代码吗?@BLT这绝对不需要双绘图(可能有更好的绘图方法),但下面是我尝试过的代码:
biplot(pca,scale=0,col=c(“橙色”、“红色”、“蓝色”))
这对真实数据有效吗@BLT我可以得到下面要绘制的第一个代码,但我不确定如何使三个类的颜色不同(即所有点都是橙色)
autoplot(pca,color=“orange”)
此代码不起作用:
autoplot(pca,color=c(“橙色”、“红色”、“蓝色”))
你能提供创建当前绘图的代码吗?@BLT这绝对不需要双绘图(可能有更好的方法来绘制),但下面是我尝试过的代码:
biplot(pca,scale=0,col=c(“橙色”、“红色”、“蓝色”))
这对真实数据有效吗@BLT我可以得到下面要绘制的第一个代码,但我不确定如何使三个类的颜色不同(即所有点都是橙色)
autoplot(pca,color=“orange”)
此代码不起作用:
autoplot(pca,color=c(“橙色”、“红色”、“蓝色”)