phyloseq: Explore microbiome profiles using R(10)

本节主要是在PhyloseqTutorials学习Heatmap Plots


Intrroduction

An ecologically-organized heatmap

在2010年BMC基因组学的一篇文章中,Rajaram和Oono描述了一种使用排序方法(即NMDS和PCA)来组织行和列而不是(层次)聚类分析来创建热图的方法,在许多情况下, ordination-base排序在提供易于解释的元素顺序方面比h-clustering做得好得多,作者提供了一个非常有用的例子来说明他们的方法[the NeatMap package for R.NeatMap包可以直接在丰度表上使用phylogenetic-sequencing数据("otu_table"-class),但是它所支持的NMDS或PCA排序选项并不是基于生态距离.为了填补这一空白,并且因为phyloseq已经提供了对大量生态距离和排序方法的支持,所以phyloseq现在包含了plot_heatmap()函数:NeatMap方法的一个面向生态的变体,用于组织热图并使用ggplot2图形工具构建热图,distancemethod参数与plot_ordination函数相同,分别支持大量的距离和排序方法,具有很强的生态学倾向.这个函数还提供了一些选项,分别使用一个分类名称和/或样本变量来重新标记OTU和样本轴-刻度,希望这可能会加速您对模式的解释(请参阅sample.labeltaxa.label参数以及下面的例子)。请注意,此函数不尝试在轴旁边叠加来自分层聚类的树状图,因为分层聚类不用于组织这些图。还要注意的是,每个重新排序的轴在边缘重复,因此在热图的最右/左或顶部/底部的明显聚类实际上可能是相同的。现在,这条边的位置可以被认为是任意的,因此,请注意图形的这种假象,并从视觉上检查在特定轴的边缘是否有两个“可合并”聚类,关于NetaMap的文章.

Heatmap colors don’t have to be so hot

传统上,热图被用来强调高于或低于阈值的数据分别为“hot”或“cold”颜色.然而,就OTU-abundance数据而言,最常见的需求似乎是在分类单元大部分为低丰度或在稀疏矩阵中缺失的背景下查看高丰度OTUs的相关模式,此外,对于传统的“hot/cold”显示,通常没有一个明显的或具有内在意义的丰度值作为合适的阈值.由于这些原因,plot_heatmap中的默认颜色方案将非常深的蓝色映射到最低的丰度值,将非常浅的蓝色映射到最高的丰度值。这个默认的连续调色板是一个连贯的,以蓝色为导向的配色方案,眼睛应该被吸引到较浅的色调。最低丰度值的深蓝色并不比黑色浅很多,而真正的黑色用于表示缺失或零丰度值.无论出于什么原因,如果您需要更改这个默认的颜色方案,都可以通过low、high和na来实现,提供给这些参数的字符串值必须是R颜色的名称.英语中有600多个颜色名是R可以识别的(在R端尝试colors()),以及其他精细分辨的颜色梯度命名法。下面的示例使用了一个6位十六进制颜色表示,并使用了一个漂亮的[table summary of these colors is available at the R Cookbook](http://wiki.stdout.org/rcookbook/Graphs/Colors%20(ggplot2)).对于进一步的细节,不认为high, low,和na.value值参数被传递给ggplot2’s scale_gradient function该函数可以很好地为梯度选择合适的颜色,前提是您选择的颜色在梯度的两端是有意义的,一些有用的想法和建议在以下WordPress page regarding the construction of heatmaps using ggplot2’sgeom_tile

Color scaling

除了定义极点的调色板外,热图中的颜色还具有从观测值到颜色的数值转换的特征称为-color scaling。默认情况下,plot_heatmap颜色范围是一个以4为底的log转换,使用log_trans(4)利用the scales package.这是一个任意的选择,您可能需要根据自己的需要和数据进行调整。如果为trans参数指定一个可选的转换对象,您可能需要首先加载scales包.因为scales是phyloseq必需的包,所以如果您已经安装了它,那么您应该已经安装了它。任何对scale包有效的转换对象都应该在这里工作,但是相对对比度和它表示数据的方式可能会因为这个选择而发生巨大的变化,所以要仔细选择;或者更好的方法是,尝试几种不同的转换,例如,如果您认为数据被“留在后台”,或者太多的信息被“推到前台”

Examples

Load Packages,Data

library("phyloseq"); packageVersion("phyloseq")
library("ggplot2"); packageVersion("ggplot2")
#ggplot2包的主题设置[the ggplot2 online documentation](http://docs.ggplot2.org/current/)
theme_set(theme_bw())

Plot a 300-taxa dataset

以下两行代码将数据集子集划分为所有样本中最丰富的前300个细菌分类单元(在本例中,没有预先的预处理)

data("GlobalPatterns")
#挑选细菌界的微生物门类,subset_taxa中的提取子集仅限于分类学表达式,eg:Kingdom=="Bacteria"
gpt <- subset_taxa(GlobalPatterns, Kingdom=="Bacteria")
#prune_taxa删除(修剪)不需要的OTUs/taxa
gpt <- prune_taxa(names(sort(taxa_sums(gpt),TRUE)[1:300]), gpt)
plot_heatmap(gpt, sample.label="SampleType")

Subset a smaller dataset based on an Archaeal phylum

利用Crenarchaeota门类进行分析

gpac <- subset_taxa(GlobalPatterns,Phylum=="Crenarchaeota")
Default plot_heatmap settings

现在让我们看看我们的plot_heatmap函数如何与所有默认设置一起工作plot_heatmap(gpac)

Re-label by a sample variable and taxonomic family

下面是一个基于“SampleType”样本变量和“Family”分类学秩重新标记的例子

p <- plot_heatmap(gpac,"NMDS","bray","SampleType", "Family")
Re-label axis titles

如果您想要更改axis标签,但不想更改单个特性上的标签,

#其中注意scales的运用
p$scales$scales[[1]]$name <- "My X-Axis"
p$scales$scales[[2]]$name <- "My Y-Axis"
print(p)
Now repeat the plot, but change the color scheme

改变配色方案可能是值得的,这取决于你想要显示热图的图形设备或纸张

plot_heatmap(gpac, "NMDS", "bray", "SampleType", "Family", low="#000033", high="#CCFF66")
#下面是一个深蓝色到红色的方案(这个配色方案好看)
plot_heatmap(gpac, "NMDS", "bray", "SampleType", "Family", low="#000033", high="#FF3300")
#深蓝色到非常浅的蓝色
plot_heatmap(gpac, "NMDS", "bray", "SampleType", "Family", low="#000033", high="#66CCFF")
#这是一个“黑暗对光明”的配色方案。注意,我们更改了背景值(NA和0元素的值),NA值为白色
plot_heatmap(gpac, "NMDS", "bray", "SampleType", "Family", low="#66CCFF", high="#000033", na.value="white")
#这是一个类似的配色方案,但“接近零”的颜色更接近奶油色,而颜色本身更接近蓝灰色。这是比许多方案更好的整体对比,但可能没有那么令人兴奋
plot_heatmap(gpac, "NMDS", "bray", "SampleType", "Family", low="#FFFFCC", high="#000033", na.value="white")

Now try different ordination methods, distances

现在尝试默认的配色方案,但是使用不同的生态距离/坐标。例如,对jaccard距离的NMDS排序

plot_heatmap(gpac,"NMDS","jaccard")
#对应分析
plot_heatmap(gpac, "DCA", "none", "SampleType", "Family")
#无约束冗余分析(主成分分析,PCA)
plot_heatmap(gpac, "RDA", "none", "SampleType", "Family")
#PCoA/MDS对(默认)bray-curtis距离的排序
plot_heatmap(gpac, "PCoA", "bray", "SampleType", "Family")
#MDS/PCoA对unweight - unifrac距离的排序
plot_heatmap(gpac, "PCoA", "unifrac", "SampleType", "Family")
#现在尝试加权unifrac距离和MDS/PCoA排序
plot_heatmap(gpac, "MDS", "unifrac", "SampleType", "Family", weighted=TRUE)
#下面介绍如何使用base-R图形和更常见(但有问题的)层次聚类组织创建heatmap,以便与`plot_heatmap`进行比较
heatmap(otu_table(gpac))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容