R语言计算α多样性指数与画图

Python0106

R语言计算α多样性指数与画图,第1张

操作之前安装好ggplot2、vegan、ggpubr包。如下:

install.packages("ggplot2")

install.packages("ggpubr")

install.packages("vegan")

计算Shannon-香农指数和Simpson-辛普森指数的命令在vegan包中,计算各组显著性的命令在ggpubr包中;画图使用ggplot命令,在行使每个命令之前一定要加载相应的包,如下:

library(ggplot2)

library(ggpubr)

library(vegan)

拿到一个otu表格,要先计算香农指数和辛普森指数,操作如下:

otu=read.table('D:/r-working/feature-table.taxonomy.txt',row.names = 1,skip=1,header=T,comment.char ='',sep='\t')

#读取out表格

#'D:/feature table.taxonomy.txt'为文件路径,注意斜线方向

#row.names = 1指定第一列为行名

#skip=1跳过第一行不读

#header=T指定第一个有效行为列名

#sep='\t'表示指定制表符为分隔符

#comment.char=''表示设置注释符号为空字符‘’,这样#后面的内容就不会被省略

otu=otu[,-ncol(otu)]

#去除表格的最后一列,无用信息

otu=t(otu)

#表格转置,必须将样品名作为行名

shannon=diversity(otu,"shannon")

#计算香农指数,先加载vegan包

shannon

#查看香农指数

simpson=diversity(otu,"simpson")

#计算辛普森指数,先加载vegan包

simpson

#查看辛普森指数

alpha=data.frame(shannon,simpson,check.names=T)

#合并两个指数

write.table(alpha,"D:/r-working/alpha-summary.xls",sep='\t',quote=F)

#存储数据,注意路径使用反斜杠

将各样本进行分组,并进行画图,操作如下:

map<-read.table('D:/r-working/mapping_file.txt',row.names = 1,header=T,comment.char ='',sep='\t',check.names=F)

#读取分组表格

group<-map["Group1"]

#提取需要的分组,'Group1'是表中的分组列名,包括A,B,C三组

alpha<-alpha[match(rownames(group),rownames(alpha)),]

#重排alpha的行的顺序,使其与group的样本id(行名)一致

data<-data.frame(group,alpha,check.rows=T)

#合并两个表格.'<-'与'='同属赋值的含义.

p=ggplot(data=data,aes(x=Group1,y=shannon))+geom_boxplot(fill=rainbow(7)[2])

#data = data指定数据表格

#x=Group1指定作为x轴的数据列名

#y=shannon指定作为y轴的数据列名

#geom_boxplot()表示画箱线图

#fill=rainbow(7)[2]指定填充色

此处用到ggplot2包画箱线图,将画图函数赋值给p后,可以用‘+’不断进行图层叠加,给图片p增加新的特性

p

#查看p

mycompare=list(c('A','B'),c('A','C'),c('B','C'))

#指定多重比较的分组对

mycompare

p<-p+stat_compare_means(comparisons=mycompare,label = "p.signif",method = 'wilcox')

#添加显著性标记的第一种方法,在此之前先加载ggpubr包

p<-p+ylim(2,5.5)

#调整图像的外观

(1)画什么函数的图像?数据是什么?

(2)生成100个[0, 100]的随机数,并画出分布直方图

x <- runif(100, 0, 100)

hist(x)

ggsurvplot(

fit, #生存分析结果

data = NULL, #a dataset used to fit survival curves

fun = NULL, # 定义生存曲线转换的任意函数。 经常使用的转换可以用字符参数指定:“event”绘制累积事件(f(y) = 1-y),“cumhaz”绘制累积风险函数(f(y) = -log(y)),“pct”以百分比表示生存概率。

color = NULL, #曲线颜色

palette = NULL, #颜色调色板,可选调色板有 "grey","npg","aaas","lancet","jco", "ucscgb","uchicago","simpsons"和"rickandmorty".

linetype = 1, #线条形状,可以用数值型向量1,2表示,也可以用字符串向量c("solid", "dashed").

conf.int = FALSE, #是否画出置信区间

pval = FALSE, #是否显示P值

pval.method = FALSE, #是否添加计算P值得方法得文本,前提是pval = TRUE

test.for.trend = FALSE, #默认是F,如果TURE,返回trend Pvalues检验。 趋势检验旨在检测生存曲线的有序差异。 也就是说,至少对一个群体来说。 只有组数为>2时,才能进行趋势测试。

surv.median.line = "none", #画一条水平或者垂直得生存中位值线,允许的值有c("none", "hv", "h", "v"). v: 垂直vertical, h:水平horizontal.

risk.table = FALSE, #是否显示风险table。其他值有absolute" or "percentage",显示绝对数值/百分比;参数"abs_pct" ,百分比以及绝对数值都显示

cumevents = FALSE, # logical value specifying whether to show or not the table of the cumulative number of events.

cumcensor = FALSE, #logical value specifying whether to show or not the table of the cumulative number of censoring.

tables.height = 0.25, #设置table得高度,取值范围0-1

group.by = NULL, #包含分组变量名称得字符串向量。长度<=2

facet.by = NULL, #一个字符向量,包含将生存曲线分成多个面板的分组变量的名称。

add.all = FALSE, #一个逻辑值。 如果为TRUE,则在主图中添加合并患者(null model)的生存曲线。

combine = FALSE, # a logical value. If TRUE, combine a list survfit objects on the same plot.

ggtheme = theme_survminer(), #主题名称

tables.theme = ggtheme, #主题名称,默认是theme_survminer.

... #后面描述的参数和其他参数将被传递给ggplot2 geom_*()函数,如linetype, size, ii)或ggpar()函数来定制图形。 看到的细节部分

)