16s分析之差异展示(热图)

前两天我向大家推了16s做差异分析的两个包(没有看的请点击下面链接):

1.16s分析之差异分析(DESeq2)

2.16s分析之差异OTU 挑选(edgeR)


差异做出来了如何展示,也是一个值得思考的问题,所以今天我们就尝试一下热图,看看效果:

#首先安装这个包

#source("http://bioconductor.org/biocLite.R")

#biocLite("edgeR")

#install.packages("rlang")

#install.packages("vegan")

library("gplots")

library("RColorBrewer")

library(edgeR)

library("ggplot2")

library("vegan")

setwd("E:/Shared_Folder/HG_usearch_HG")

# 读入mapping文件

design =read.table("map_lxdjhg.txt", header=T, row.names= 1,sep="\t")

# 读取OTU表,这里我选择的是整个otu表格,但是一般没有必要全部做差异的啊,相对丰度高的做做就可以了

otu_table =read.delim("otu_table.txt", row.names= 1,sep="\t",header=T,check.names=F)

#本步骤采用otu。table基于抽平后的qiime文件,去掉第一行,和第二行首行的#符号,即可导入成功。

# 过滤数据并排序

idx =rownames(design) %in% colnames(otu_table)

sub_design =design[idx,]

count =otu_table[, rownames(sub_design)]

# 转换原始数据为百分比,

norm =t(t(count)/colSums(count,na=T)) * 100 # normalization to total 100

# create DGE list

d = DGEList(counts=count,group=sub_design$SampleType)#count是一个数据框,$samples是第二个数据框

d =calcNormFactors(d)

# 生成实验设计矩阵

design.mat =model.matrix(~ 0 + d$samples$group)

colnames(design.mat)=levels(design$SampleType)

colnames(design.mat)

d2 =estimateGLMCommonDisp(d, design.mat)

d2 =estimateGLMTagwiseDisp(d2, design.mat)

fit = glmFit(d2,design.mat)

# 设置比较组

BvsA <-makeContrasts(contrasts = "GC1-GF1",levels=design.mat)#

# 组间比较,统计Fold change,Pvalue

lrt =glmLRT(fit,contrast=BvsA)

# FDR检验,控制假阳性率小于5%

de_lrt =decideTestsDGE(lrt, adjust.method="fdr", p.value=0.00005)

# 导出计算结果

x=lrt$table

head(x)

x$sig=de_lrt

enriched =row.names(subset(x,sig==1))

depleted =row.names(subset(x,sig==-1))

## 提取做差异的两个组的分组信息

pair_group =subset(sub_design, SampleType %in% c("GC1", "GF1"))

# 合并上升和下降的otu行名

DE=c(enriched,depleted)

#选择norm文件,就是行前面计算的相对丰度文件中的差异otu,列选择对应的组名

wt<-norm[DE,rownames(pair_group)]

str(wt)

# 绘图代码、预览、保存PDF

tiff(file="heatmap_otu.tif",res = 300, compression = "none", width=720,height=540,units="mm")

pdf("heatmap_otu.pdf")

# scale in row,dendrogram only in row, not cluster in column

p<-heatmap.2(wt,scale="row", Colv=F, Rowv=FALSE,dendrogram="none",

col=rev(colorRampPalette(brewer.pal(11, "RdYlGn"))(256)),

cexCol=1,keysize=1,density.info="none",main=NULL,trace="none",margins= c(6, 17))

这里还是对其中几个参数做一个解释吧:

dendrogram="none":就是不聚类,就是没有下图的这个:

dendrogram="row"对列进行聚类

dendrogram="col"对行进行聚类,这里行我们表示的样品,可以来一个聚类:

当然参数还有很多,我先不调整了,我要换包做

dev.off()

#图形太丑,放弃使用

下面开始使用pheatmap

library(pheatmap)

#默认参数出图,发现图形还可以,添加的灰色边框也很好看

pheatmap(wt )

但是问题也是有的,数据颜色不是很分明

下面我们修改颜色和数据,方便展示:

colorRampPalette 函数支持自定义的创建一系列的颜色梯度;

#这里我设置藏青色,白色,和红色为渐变色,当然可以修改

color =colorRampPalette(c("navy", "white","firebrick3"))(30)

# cluster_rows横向无序聚类;fontsize=6字体大小我调节为6

pheatmap(wt,fontsize=6,cluster_rows= FALSE,

color =colorRampPalette(c("navy", "white","firebrick3"))(60) )

#这里我需要对数据进行变换,因为上面也看到了,我的数据都集中在蓝色的区域,我对让他们差异缩小一些

wt2<--log10(wt+0.00001)

#发现有很多极大值,特别红的那些

wt2<-sqrt(wt)

pheatmap(wt2,fontsize=6,cluster_rows= FALSE,

color =colorRampPalette(c("navy", "white","firebrick3"))(60) )

#还是不行

wt2<-sqrt(wt)

#我们把差异极大的点修改一下c小一些,另外图形需要窄一些,来适应期刊

wt2[wt2>0.9]<-0.9

pheatmap(wt2,fontsize=6,cellwidth= 10, cellheight = 10,cluster_rows = FALSE,

color =colorRampPalette(c("navy", "white","firebrick3"))(60) )

#加保存和题目

pheatmap(wt2,fontsize=6,cellwidth= 10, cellheight = 10,cluster_rows = FALSE,

color =colorRampPalette(c("navy", "white","firebrick3"))(60),

,main = "OTU heatmap",filename= "otu.pdf")

#下面我们来学习一下分分隔,横向分组我们使用聚类,纵向自己制定

#当然我们不能乱分组,这里我们建立两个分组文件

下面我减少了差异OTU的数目通过控制:

# FDR检验,控制假阳性率小于5%

de_lrt =decideTestsDGE(lrt, adjust.method="fdr", p.value=0.0000000000005)

# 下面命令和上面相同,再运行一次

x=lrt$table

head(x)

x$sig=de_lrt

enriched =row.names(subset(x,sig==1))

depleted =row.names(subset(x,sig==-1))

pair_group =subset(sub_design, SampleType %in% c("GC1", "GF1"))

DE=c(enriched,depleted)

wt<-norm[DE,rownames(pair_group)]

wt2<-sqrt(wt)

wt2[wt2>0.9]<-0.9

#我们支持分组,这里我随便造一个分组,作为纵向分组信息

annotation_row =data.frame(OTUClass = factor(rep(c("wt1", "wt2","wt3", "wt4"), c(7, 7,7,7))))

rownames(annotation_row)= rownames(wt2)

#我再造一个横向分组信息

annotation_col =data.frame(breaks = factor(rep(c("GC1", "GF1"),c(9,9))))

rownames(annotation_col)= c(paste("GC1", 1:9, sep = "") ,paste("GF5",1:9, sep = ""))

#运行代码

pheatmap(wt2,fontsize=6,cellwidth= 10, cellheight = 10,cluster_rows = FALSE,

color =colorRampPalette(c("navy", "white","firebrick3"))(60) ,

cutree_col = 2,gaps_row = c(5,25,30),

annotation_col =annotation_col,annotation_row = annotation_row)

出现错误:

我们的分隔信息和分组信息明不匹配,所以大家要特别注意

#修改分隔信息:

pheatmap(wt2,fontsize=6,cellwidth= 10, cellheight = 10,cluster_rows = FALSE,

color =colorRampPalette(c("navy", "white","firebrick3"))(60) ,

cutree_col = 2,gaps_row = c(7,14,21),

annotation_col =annotation_col,annotation_row = annotation_row)

最终成图欣赏:

(0)

相关推荐

  • R绘图笔记 | 热图绘制

    关于绘图,前面介绍了一些: R绘图笔记 | 一般的散点图绘制 R绘图笔记 | 柱状图绘制 R绘图笔记 | 直方图和核密度估计图的绘制 R绘图笔记 | 二维散点图与统计直方图组合 R绘图笔记 | 散点分 ...

  • R语言学习系列之“多变的热图”

    咱公众号也不能只做一个系列,所以经过深思熟虑,打算将来慢慢增加一些内容,主要有以下几个系列TCGA数据分析系列GEO数据分析系列"老板给一个基因,我该怎么办"系列文献阅读系列R语言 ...

  • R语言代码相关疑问标准提问

    关于如何提问,如何高效沟通,其实我们讲解了非常多了,比如我一直推崇的邮件交流:如果你希望我回答你的问题 ,然后也会随机抽取粉丝提问进行解答:答读者问第一弹:R里面差异分析的limma包用法细节 .也高 ...

  • 热图系列1

    热图(heatmap)用不同的颜色和颜色的深浅来直观的展示数据之间的差异.在测序类的文章里,几乎必有一幅热图用来展示差异表达基因.很多工具都可以完成热图的制作,今天这篇文章主要介绍利用R语言的 phe ...

  • 多分组热图不用愁,Pheatmap来帮忙

    [Pheatmap 绘制多分组热图] 热图作为实验数据分布情况的直观展示方法,已经成为高分文章的不错选择,它不仅可以对数据质量进行具像化展示,还可以对数据和样品进行聚类.在R中有多个包均可绘制热图,今 ...

  • 技术贴 | R语言:手把手教你画pheatmap热图

    导读: pheatmap默认会对输入矩阵数据的行和列同时进行聚类,但是也可以通过布尔型参数cluster_rows和cluster_cols设置是否对行或列进行聚类,具体看分析需求.利用display ...

  • 16s分析之差异OTU 挑选(edgeR)

    16s分析到多样性后我们就开始对差异OTU 进行挑选 基于原始count数目,我们参考两个包来做差异分析: library(DESeq2) library(edgeR) 这里当时是首先使用edgeR包 ...

  • 萌新学完GEO课程复现SCI文章差异基因的热图

    文章标题是:Tinagl1 Suppresses Triple-Negative Breast Cancer Progression and Metastasis by Simultaneously ...

  • 教你画一个掰弯的热图(Heatmap),展示更多的基因表达量

    难道,这不像孔雀开屏吗? 写在前面 组学数据已经泛滥,但是信息的挖掘仍任重道远.顺手的工具,可以节省使用者尽可能多的时间,或者将看起来很复杂,很难以完成的事情,变得非常简单. 图形的掰弯,这个是我很久 ...

  • 以热图为例,展示图形可交互的有趣之处

    写在前面 Emmm... 学校网络或者电力应是出了问题,无法远程操作学校服务器.于是,好不容易的不碎片化的时间,还是没能用在工作上.既然如此,那么我还是要找点事情做.电视剧看了,动漫也看了,文献也刷了 ...

  • 热图如何绘制,怎么分析?看完这篇就会了

    在组学研究中,我们常常会用到热图(Heatmap).色彩丰富的热图总能吸引读者的眼球,给文章增色.但一堆堆的色块让人眼花缭乱,背后的分析方法更让人不知从何下手.今天我们先来初步探一探门道. 热图的解读 ...

  • 扩增子统计绘图3热图:样品相关分析,差异OTU/ASV

    <扩增子统计绘图>系列文章介绍 <扩增子统计绘图>是之前发布的<扩增子图表解读>和<扩增子分析解读>的进阶篇,是在大家可以看懂文献图表,并能开展标准扩增 ...

  • R语言绘制圈图、环形热图可视化基因组实战:展示基因数据比较

    原文链接:http://tecdat.cn/?p=23891 可以使用环状图形展示基因数据比较.可以添加多种图展信息,如热图.散点图等. 本文目标: 可视化基因组数据 制作环形热图 环形热图很漂亮.可 ...

  • 26种仪器分析的原理及谱图方法大全

    来源:医疗人咖啡 分析原理:吸收紫外光能量,引起分子中电子能级的跃迁 谱图的表示方法:相对吸收光能量随吸收光波长的变化 提供的信息:吸收峰的位置.强度和形状,提供分子中不同电子结构的信息 分析原理:被 ...

  • 八大数据分析模型之——热图分析模型(四)

    诸葛君说:产品/运营们最痛苦的莫过于说服开发部门同意我们的网页改版方案,他们往往会充满怀疑的反问:为什么要这样做?总之,在你无法证明"你是对的"情况下,所有的沟通仿佛都站不住脚,今 ...