gpt4 book ai didi

r - 用颜色绘制 PCA 分数

转载 作者:行者123 更新时间:2023-12-01 12:48:59 27 4
gpt4 key购买 nike

我正在做 PCA,我想在 R 中绘制第一个主成分与第二个主成分:

pca<-princomp(~.,data=data, na.action=na.omit
plot(pca$scores[,1],pca$scores[,2])

或者可能是几个主要成分:

pairs(pca$scores[,1:4])

但是点是黑色的。如何适本地为图表添加颜色?我需要多少种颜色?我正在绘制的每个主要成分一个?或者我的数据矩阵中的每一行一个?

谢谢

编辑:

我的数据是这样的:

> data[1:4,1:4]
patient1 patient2 patient3 patient4
2'-PDE 0.0153750 0.4669375 -0.0295625 0.7919375
7A5 2.4105000 0.3635000 1.8550000 1.4080000
A1BG 0.9493333 0.2798333 0.7486667 0.7500000
A2M 0.2420000 1.0385000 1.1605000 1.6777500

那么这是否合适:

plot(pca$scores[,1:4], pch=20, col=rainbow(dim(data)[1]))

最佳答案

以下是 PCA 的一些示例图。取自here .

z1 <- rnorm(10000, mean=1, sd=1); z2 <- rnorm(10000, mean=3, sd=3); z3 <- rnorm(10000, mean=5, sd=5); z4 <- rnorm(10000, mean=7, sd=7); z5 <- rnorm(10000, mean=9, sd=9); mydata <- matrix(c(z1, z2, z3, z4, z5), 2500, 20, byrow=T, dimnames=list(paste("R", 1:2500, sep=""), paste("C", 1:20, sep=""))) 

summary(pca)
summary(pca)$importance[, 1:6]

x11(height=6, width=12, pointsize=12); par(mfrow=c(1,2))

mycolors <- c("red", "green", "blue", "magenta", "black") # Define plotting colors. plot(pca$x, pch=20, col=mycolors[sort(rep(1:5, 500))])

plot(pca$x, type="n"); text(pca$x, rownames(pca$x), cex=0.8, col=mycolors[sort(rep(1:5, 500))])

你可以使用对

pairs(pca$x[,1:5], col = mycolors) 

为前两个主成分加上存储在 pca$rotation 中的相应特征向量绘制散点图。

library(scatterplot3d) 
scatterplot3d(pca$x[,1:3], pch=20, color=mycolors[sort(rep(1:5, 500))])

同上,但在 3D 散点图中绘制了前三个主要成分。

library(rgl); rgl.open(); offset <- 50; par3d(windowRect=c(offset, offset, 640+offset, 640+offset)); rm(offset); rgl.clear(); rgl.viewpoint(theta=45, phi=30, fov=60, zoom=1); spheres3d(pca$x[,1], pca$x[,2], pca$x[,3], radius=0.3, color=mycolors, alpha=1, shininess=20); aspect3d(1, 1, 1); axes3d(col='black'); title3d("", "", "PC1", "PC2", "PC3", col='black'); bg3d("

后者使用 Open GL 创建交互式 3D 散点图。为此需要安装 rgl 库。要保存图形的快照,可以使用命令 rgl.snapshot("test.png")。

require(GGally)
ggpairs(pca$x[,1:5])

关于r - 用颜色绘制 PCA 分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14286858/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com