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

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

作者: 科研那点事儿 | 来源:发表于2022-07-24 09:00 被阅读0次

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

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

    加载包

    1)设置工作目录

    rm(list=ls())#clear Global Environment
    setwd('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)
    
    image.png

    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.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")
    #将绘图数据和分组合并
    df <- merge(PC12,group,by="samples")
    head(df)
    
    image.png

    绘制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
    
    image.png

    添加箱线图

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

    源码及作图数据可在公众号后台回复\color{red}{PCA}获取!!!

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/mppiirtx.html