????PCA,即主成分分析(Principal Component Analysis),是一種考察多個(gè)變量間相關(guān)性的降維統(tǒng)計(jì)方法,其原理是設(shè)法將原來(lái)變量重新組合成一組新的互相無(wú)關(guān)的幾個(gè)綜合變量,同時(shí)根據(jù)實(shí)際需要從中可以取出幾個(gè)較少的綜合變量盡可能多地反映原來(lái)變量的信息的統(tǒng)計(jì)方法(摘自百度百科)。
????通俗來(lái)說(shuō),就是將數(shù)據(jù)從高維映射到低維以達(dá)到降低特征維度的目的。計(jì)算時(shí),主要通過(guò)對(duì)協(xié)方差矩陣進(jìn)行特征分解而得到數(shù)據(jù)的特征向量(即主成分)與其權(quán)值(特征值)。
加載包
1)設(shè)置工作目錄
rm(list=ls())#clear Global Environment
setwd('D:\\桌面\\PCA')#設(shè)置工作路徑
2)安裝、加載包
#安裝所需R包
# install.packages("ggplot2")
# install.packages("ggpubr")
# install.packages("ggsignif")
#加載包
library(ggplot2)#繪圖包
library(ggpubr)
library(ggsignif)
讀取數(shù)據(jù)
#讀取數(shù)據(jù)(以之前做PCoA分析的OTU表為例)
otu_raw <- read.table(file="otu.txt",sep="\t",header=T,check.names=FALSE ,row.names=1)
#由于排序分析函數(shù)所需數(shù)據(jù)格式原因,需要對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)置
otu <- t(otu_raw)

image.png
PCA分析
#pca分析(此處使用R內(nèi)置函數(shù)prcomp()函數(shù)進(jìn)行分析)
df_PCA <- prcomp(otu,scal=TRUE)
#預(yù)覽pca分析結(jié)果
df_PCA_sum <- summary(df_PCA)
#提取出PC1及PC2的坐標(biāo)
PC12 <- df_PCA$x[,1:2]
#計(jì)算各主成分解釋度
pc <- df_PCA_sum$importance[2,]*100
加入分組信息
#PCl2原來(lái)是matrix,轉(zhuǎn)化為data.frame
PC12 <- as.data.frame(PC12)
#給PC12添加samp1es變量
PC12$samples <- row.names(PC12)
# 添加分組信息
group <- read.table("group.txt", sep='\t', header=T)
#修改列名
colnames(group) <- c("samples","group")
#將繪圖數(shù)據(jù)和分組合并
df <- merge(PC12,group,by="samples")
head(df)

image.png
繪制PCA散點(diǎn)圖
color=c("#1597A5","#FFC24B","#FEB3AE")#顏色變量
p1<-ggplot(data=df,aes(x=PC1,y=PC2,
color=group,shape=group))+#指定數(shù)據(jù)、X軸、Y軸,顏色
theme_bw()+#主題設(shè)置
geom_point(size=1.8)+#繪制點(diǎn)圖并設(shè)定大小
theme(panel.grid = element_blank())+
geom_vline(xintercept = 0,lty="dashed")+
geom_hline(yintercept = 0,lty="dashed")+#圖中虛線
#geom_text(aes(label=samples, y=V2+0.03,x=V1+0.03, vjust=0),size=3.5)+#添加數(shù)據(jù)點(diǎn)的標(biāo)簽
# guides(color=guide_legend(title=NULL))+#去除圖例標(biāo)題
labs(x=paste0("PC1 (",pc[1],"%)"),
y=paste0("PC2 (",pc[2],"%)"))+#將x、y軸標(biāo)題改為貢獻(xiàn)度
stat_ellipse(data=df,
geom = "polygon",level=0.95,
linetype = 2,size=0.5,
aes(fill=group),
alpha=0.2,
show.legend = T)+
scale_color_manual(values = color) +#點(diǎn)的顏色設(shè)置
scale_fill_manual(values = c("#1597A5","#FFC24B","#FEB3AE"))+
theme(axis.title.x=element_text(size=12),#修改X軸標(biāo)題文本
axis.title.y=element_text(size=12,angle=90),#修改y軸標(biāo)題文本
axis.text.y=element_text(size=10),#修改x軸刻度標(biāo)簽文本
axis.text.x=element_text(size=10),#修改y軸刻度標(biāo)簽文本
panel.grid=element_blank())#隱藏網(wǎng)格線
p1

image.png
添加箱線圖
????與之前RDA繪制代碼基本一致,只需要改正幾個(gè)參數(shù)即可,這里不做過(guò)多贅述,具體大家可下載源碼查看!

image.png