02_PCA主成分分析
主成分分析(principal component analysis,PCA)是一种常见的数据降维方法:目的是减少数据集的维数,同时保持数据集中的对方差贡献最大的特征,即在“信息”损失较小的前提下,将高维的数据转换到低维,从而减小计算量。
实操前准备好表达矩阵以及样本信息两份文件:
准备文件的格式参考上一篇文章
- 表达矩阵
2.样本信息
实操代码:
01_读入数据(表达矩阵和样本信息)
dat = read.table("GeneExpression.txt",header=TRUE,sep="\t")
traits = read.table('sampleTraits.txt',sep="\t",header= T)
02_定义颜色
blue = "#307eb9"
purple = "#974e9e"
red = "#e41e25"
orange = "#f57f21"
yellow = "#f4ed35"
lblue = "#74d7ff"
red2 = "#ff1751"
green = "#4cb049"
color = factor(traits$grade,
labels = c(lblue,purple,orange,yellow,red2,green,"black"),
levels = c("G1","G2","G3","G4","G5","G6","G7"))
03_主成分分析计算
pca <- princomp(dat)
04_可视化
0401_draw 3d plot--1" 交互式绘图
安装rgl R包
BiocManager::install("rgl")
install.packages("httpuv") ##⚠️安装此函数出现询问,选择none,否则可能报错
library(rgl)
plot3d(pca$loadings[,1:3],col=color,
type="s",radius=0.005,
grid=50L,pch=16)
0402_draw 3d plot--2 平面图
一个角度
BiocManager::install("scatterplot3d") ##下载scatterplot3d R包
library(scatterplot3d)
scatterplot3d(pca$loadings[,1:3],main='PCA',color=color,type='p',
highlight.3d=F,angle=60,grid=T,box=T,scale.y=1,
cex.symbols=0.8,pch=16,col.grid='lightblue')
legend("topright",paste("G",1:7,sep=""),fill=c(lblue,purple,orange,yellow,red2,green,"black"),box.col="grey")
多个角度
library(scatterplot3d)
首先定义一个绘图函数
pdf('pca.pdf',onefile=TRUE,width=8,height=8)
diffangle <- function(ang){
scatterplot3d(pca$loadings[,1:3],main='PCA',color=color,type='p',
highlight.3d=F,angle=ang,grid=T,box=T,scale.y=1,
cex.symbols=1.2,pch=16,col.grid='lightblue')
legend("topright",paste("G",1:7,sep=""),fill=c(lblue,purple,orange,yellow,red2,green,"black"),box.col="grey")
}
使用循环函数,从-360度到360度,每隔5度运行一次函数绘制一个图
sapply(seq(-360,360,5),diffangle)
dev.off()