R语言计算β多样性指数及分析

Python013

R语言计算β多样性指数及分析,第1张

计算β多样性指数需要用到phyloseq包。它的安装方式不同于简单的install.packages(“phyloseq”)

有两种方法可以安装

1.先安装BiocManager

install.packages("BiocManager")

library("BiocManager")

BiocManager::install("phyloseq")

library("phyloseq")

2.source("https://bioconductor.org/biocLite.R")

biocLite("phyloseq")

#安装phyloseq

library("phyloseq")

安装并加载了phyloseq包后,开始读取数据,前面计算α多样性,用到的是read.table……

qiimedata <- import_qiime(otufilename = "feature-table.taxonomy.txt", mapfilename = "mapping_file.txt", treefilename = "tree.rooted.nwk", refseqfilename = "dna-sequences.fasta")

#读取数据,参数都是文件名,注意加后缀

#otufilename指定out表格,mapfilename指定map文件(分组数据)

#treefilename指定有根进化树文件

#refseqfilename指定代表序列文件

otu<-qiimedata@[email protected]

#从qiimedata里面提取otu

sum_of_otus<-colSums(t(otu))

#t_转置,colsums计算列的和,即计算各个otu检测到的总序列数,为了筛掉一些总序列数过低的otu(可能是测序错误)

sum_of_otus

#查看otu总序列数

selected_otu<-names(sum_of_otus)[sum_of_otus>10]

#获取总序列数大于10的otu id

sub_qiimedata <- prune_taxa(selected_otu, qiimedata)

#筛选总序列数大于10的otu的phyloseq数据

weighted_unifrac<-distance(sub_qiimedata,method = 'wunifrac')

#计算样本间加权unifrac

unweighted_unifrac<-distance(sub_qiimedata,method = 'unifrac')

#计算样本间非加权unifrac

bray_curtis <- distance(sub_qiimedata, method='bray')

write.table(as.matrix(bray_curtis),"bray_curtis.txt",sep = '\t',quote = FALSE,col.names = NA)

#保存距离矩阵

#计算样本间Bray-Curtis距离矩阵,method 可选" wunifrac ", " unifrac " ,"jaccard"等

pcoa_of_bray_curtis<-ordinate(physeq=sub_qiimedata,distance = 'bray',method = "PCoA")

#基于Bray-Curtis距离矩阵的PCoA排序分析

p<-plot_ordination(sub_qiimedata, pcoa_of_bray_curtis, type="samples", color="Group1",shape = "Group1")

#将PCoA排序分析结果可视化

library("ggplot2")

p<-p+ scale_colour_manual(values=c("#DC143C","#808000","#00CED1")) + geom_point(size=2) +ggtitle("PCoA of Bray-Curtis distance")+theme(text = element_text(size = 15))

#修改图形大小,ggtitle加标题,stat_ellipse加椭圆

#用scale_colour_manual(values=c())自定义颜色,可查颜色的16进制对照表

p

nmds_of_bray_curtis<-ordinate(physeq=sub_qiimedata,distance = 'bray',method = "NMDS")

#基于Bray-Curtis距离矩阵的NMDS排序分析

p1<-plot_ordination(qiimedata, nmds_of_bray_curtis, type="samples", color="Group1")

#将NMDS排序分析结果可视化

# color=“Group1”指定不同分组的点染不同颜色

p1

p1<-p1+ geom_point(size=3) +ggtitle("NMDS of Bray-Curtis distance") + stat_ellipse()+theme(text = element_text(size = 15))

#对图片进行适当修饰, stat_ellipse()加椭圆, ggtitle()加标题

ggsave(plot = p1,“nmds_of_bary_curtis.pdf",dpi = 300,width

PCoA中的两个点距离,接近β多样性指数

PCA(Principal Components Analysis)即主成分分析,也称主分量分析或主成分回归分析法,首先利用线性变换,将数据变换到一个新的坐标系统中然后再利用降维的思想,使得任何数据投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上。这种降维的思想首先减少数据集的维数,同时还保持数据集的对方差贡献最大的特征,最终使数据直观呈现在二维坐标系。

PCoA(Principal Co-ordinates Analysis)分析即主坐标分析,可呈现研究数据相似性或差异性的可视化坐标,是一种非约束性的数据降维分析方法,可用来研究样本群落组成的相似性或相异性。它与PCA类似,通过一系列的特征值和特征向量进行排序后,选择主要排在前几位的特征值,找到距离矩阵中最主要的坐标,结果是数据矩阵的一个旋转,它没有改变样本点之间的相互位置关系,只是改变了坐标系统。两者的区别为PCA是基于样本的相似系数矩阵(如欧式距离)来寻找主成分,而PCoA是基于距离矩阵(欧式距离以外的其他距离)来寻找主坐标。

NMDS图中两个点的距离的排序,接近β多样性指数的排序

1. 如何将barplot图例做到绘图区外.txt

下面的代码包括了折线图和直方图的实现: 1、.h文件:#import #import 散点图的数据点数: 20#define num 20@interface BarChartViewController : UIViewController {@privateCPXYGraph * graph double x [ num ] ; 散点的 x 坐标 double y1 [ num ] ; 第 1 个散点图的 y 坐标double y2 [ num ]; 第 2 个散点图的 y 坐标} @end2、.m文件:#import "BarChartViewController.h"@implementation BarChartViewController-( BOOL )shouldAutorotateToInterfaceOrientation:( UIInterfaceOrientation )toInterfaceOrientation{return YES }#pragma mark -#pragma mark Initialization and teardown -( void )viewDidAppear:( BOOL )animated{ 为 CPGraph 指定主题 graph = [[ CPXYGraph alloc ] initWithFrame : CGRectZero ]CPTheme *theme = [ CPTheme themeNamed : kCPDarkGradientTheme ][ graph applyTheme :theme]; 把 self.view 由 UIView 转变为 CPGraphHostingView ,因为 UIView 无法加载 CPGraphself . view =[[ CPGraphHostingView alloc ] initWithFrame :[ UIScreen mainScreen ]. bounds ]CPGraphHostingView *hostingView = ( CPGraphHostingView *) self . view [hostingView setHostedGraph : graph ]CPGraph 边框:无graph . plotAreaFrame . borderLineStyle = nil graph . plotAreaFrame . cornerRadius = 0.0f ; 绘图空间 plot space CPXYPlotSpace *plotSpace = ( CPXYPlotSpace *) graph . defaultPlotSpace ; 绘图空间大小: Y : 0-300 , x : 0-16 plotSpace. yRange = [ CPPlotRange plotRangeWithLocation : CPDecimalFromFloat ( 0.0f ) length :CPDecimalFromFloat ( 200.0f )]plotSpace. xRange = [ CPPlotRange plotRangeWithLocation : CPDecimalFromFloat ( 0.0f ) length :CPDecimalFromInt ( num )]CPGraph 四边不留白 graph . paddingLeft = 0.0f graph . paddingRight = 0.0f graph . paddingTop = 0.0f graph . paddingBottom = 0.0f ; 绘图区 4 边留白 graph . plotAreaFrame . paddingLeft = 45.0 graph . plotAreaFrame . paddingTop = 40.0 graph . plotAreaFrame . paddingRight = 5.0 graph . plotAreaFrame . paddingBottom = 80.0 ; 坐标系CPXYAxisSet *axisSet = ( CPXYAxisSet *) graph . axisSet x 轴:为坐标系的 x 轴 CPXYAxis *X = axisSet. xAxis ; 清除默认的轴标签 , 使用自定义的轴标签X. labelingPolicy = CPAxisLabelingPolicyNone ; 构造 MutableArray ,用于存放自定义的轴标签NSMutableArray *customLabels = [ NSMutableArray arrayWithCapacity : num ]; 构造一个 TextStylestatic CPTextStyle * labelTextStyle= nil labelTextStyle=[[ CPTextStyle alloc ] init ]labelTextStyle. color =[ CPColor whiteColor ]labelTextStyle. fontSize = 10.0f ; 每个数据点一个轴标签for ( int i= 0 i<num i++) {CPAxisLabel *newLabel = [[ CPAxisLabel alloc ] initWithText : [ NSString stringWithFormat : @" 第 %d 个数据点 " ,(i+ 1 )] textStyle :labelTextStyle]newLabel. tickLocation = CPDecimalFromInt (i)newLabel. offset = X. labelOffset + X. majorTickLength newLabel. rotation = M_PI / 2 [customLabels addObject :newLabel][newLabel release ]}X. axisLabels = [ NSSet setWithArray :customLabels]y 轴CPXYAxis *y = axisSet. yAxis y 轴:不显示小刻度线 y. minorTickLineStyle = nil ; 大刻度线间距: 50 单位 y. majorIntervalLength = CPDecimalFromString ( @"50" ); 坐标原点: 0 y. orthogonalCoordinateDecimal = CPDecimalFromString ( @"0" )y. titleOffset = 45.0f y. titleLocation = CPDecimalFromFloat ( 150.0f ); 第 1 个散点图:蓝色CPScatterPlot *boundLinePlot = [[[ CPScatterPlot alloc ] init ] autorelease ]id ,用于识别该散点图 boundLinePlot. identifier = @"Blue Plot" ; 线型设置 CPLineStyle * lineStyle = [[[ CPLineStyle alloc ] init ] autorelease ]lineStyle. lineWidth = 1.0f lineStyle. lineColor = [ CPColor blueColor ]boundLinePlot. dataLineStyle = lineStyle; 设置数据源 , 必须实现 CPPlotDataSource 协议 boundLinePlot. dataSource = self [ graph addPlot :boundLinePlot]; 在图形上添加一些小圆点符号(节点)CPLineStyle *symbolLineStyle = [[ CPLineStyle alloc ] init ]; 描边:黑色symbolLineStyle. lineColor = [ CPColor blackColor ]; 符号类型:椭圆CPPlotSymbol *plotSymbol = [ CPPlotSymbol ellipsePlotSymbol ]; 填充色:蓝色plotSymbol. fill = [ CPFill fillWithColor :[ CPColor blueColor ]]; 描边plotSymbol. lineStyle = symbolLineStyle; 符号大小。

2. R语言如何修改图例标签

第一步,声明三个向量amount、apple和banana,分别使用数值向量赋值,如下图所示:

第二步,调用par()函数绘制图形面板,这里设置为只读属性,如下图所示:

第三步,调用plot()函数绘制图形,设置了图形的形状、点形状、主副标题、xy轴标题和y轴数值范围等,如下图所示:

第四步,执行了plot()函数命令,可以看到一条蓝色的虚线,如下图所示:

第五步,使用lines()函数绘制另一条线,设置为绿色,pch为5,lty为4,如下图所示:

6

第六步,调用legend()函数,绘制图形图例;设置图例标题、选择线条、选择的颜色等,如下图所示:

3. 请教:如何在R中用plot画图时将刻度线标在内部

可以用matlab提供的坐标轴设置函数axis进行设置(对当前坐标轴进行设置),具体用法如下:

plot(x, y); 画图后用axis函数设置坐标轴的范围

axis([xmin xmax ymin ymax]); % 设置坐标轴在指定的区间

xmin、xmax 表示设置横坐标的最小最大值;

ymin、ymax 表示设置纵坐标的最小最大值。

也可以用下面的set函数进行设置(对指定的坐标轴进行设置),具体用法如下:

plot(x, y); 画图后用set函数设置坐标轴的属性

set(handles,'xtick',0:100:2500) % handles可以指定具体坐标轴的句柄

功能: 设置X轴坐标范围0到2500,显示间隔是100

使用R语言为PCA散点图加置信区间的方法,我知道的有三种,分别是使用ggplot2,ggord,ggfortify三个包去绘制。后面两个R包是基于ggplot2的快捷返方法。

现在拿一组数据集为例,使用先R中的prcomp()基础函数完成主成分分析