查看原文
其他

基于R语言的微生物群落组成多样性分析——PCA分析

王志山 科研后花园 2023-09-08

PCA,主成分分析(Principal Component Analysis),是一种考察多个变量间相关性的降维统计方法,其原理是设法将原来变量重新组合成一组新的互相无关的几个综合变量,同时根据实际需要从中可以取出几个较少的综合变量尽可能多地反映原来变量的信息的统计方法(摘自百度百科)。

通俗来说,就是将数据从高维映射到低维以达到降低特征维度的目的。计算时,主要通过对协方差矩阵进行特征分解而得到数据的特征向量(即主成分)与其权值(特征值)。

加载包

1)设置工作目录

rm(list=ls())#clear Global Environmentsetwd('D:\\桌面\\PCA')#设置工作路径

2)安装、加载包

#安装所需R包# install.packages("ggplot2")# install.packages("ggpubr")# install.packages("ggsignif")#加载包library(ggplot2)#绘图包library(ggpubr)library(ggsignif)

读取数据

#读取数据(以之前做PCoA分析的OTU表为例)otu_raw <- read.table(file="otu.txt",sep="\t",header=T,check.names=FALSE ,row.names=1)#由于排序分析函数所需数据格式原因,需要对数据进行转置otu <- t(otu_raw)

PCA分析

#pca分析(此处使用R内置函数prcomp()函数进行分析)df_PCA <- prcomp(otu,scal=TRUE)#预览pca分析结果df_PCA_sum <- summary(df_PCA)#提取出PC1及PC2的坐标PC12 <- df_PCA$x[,1:2]#计算各主成分解释度pc <- df_PCA_sum$importance[2,]*100

加入分组信息

#PCl2原来是matrix,转化为data.framePC12 <- 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")#将绘图数据和分组合并df <- merge(PC12,group,by="samples")head(df)

绘制PCA散点图

color=c("#1597A5","#FFC24B","#FEB3AE")#颜色变量p1<-ggplot(data=df,aes(x=PC1,y=PC2, color=group,shape=group))+#指定数据、X轴、Y轴,颜色 theme_bw()+#主题设置 geom_point(size=1.8)+#绘制点图并设定大小 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)+#添加数据点的标签 # guides(color=guide_legend(title=NULL))+#去除图例标题 labs(x=paste0("PC1 (",pc[1],"%)"), y=paste0("PC2 (",pc[2],"%)"))+#将x、y轴标题改为贡献度 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) +#点的颜色设置 scale_fill_manual(values = c("#1597A5","#FFC24B","#FEB3AE"))+ theme(axis.title.x=element_text(size=12),#修改X轴标题文本 axis.title.y=element_text(size=12,angle=90),#修改y轴标题文本 axis.text.y=element_text(size=10),#修改x轴刻度标签文本 axis.text.x=element_text(size=10),#修改y轴刻度标签文本 panel.grid=element_blank())#隐藏网格线p1

添加箱线图

与之前RDA绘制代码基本一致,只需要改正几个参数即可,这里不做过多赘述,具体大家可下载源码查看!


源码及作图数据可在后台回复PCA获取!!!

爱我请给我好看!

更多推荐

R可视化——气泡图

基于SPSS进行显著性分析及字母标记

基于R语言的微生物群落组成多样性分析——CCA分析

基于R语言的微生物群落组成多样性分析——RDA分析

基于R语言如何实现偏最小二乘法判别分析(PLS-DA)?

基于R语言的微生物群落组成多样性分析——共线性网络分析

基于R语言的微生物群落组成多样性分析—β多样性之PCoA分析

基于R语言的微生物群落组成多样性分析—β多样性之组间差异性检验

基于origin怎么实现图片排版

基于R语言的微生物群落组成多样性分析——物种丰度可视化之弦图(Chord Diagram)

R可视化——线性相关性分析及可视化

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存