三元图总结

简介

三元图(Ternary plot)1是描述三个变量之和为常数的质心图,其核心原理是:

  1. 等边三角形内任意一点到三角形三边的距离之和等于其中一边上的高(常数);

  2. 过等边三角形内任意一点分别向三条边作平行线,按顺时针方向或逆时针方向读取平行线在各边所截取之三条线段,三条线段之和等于该等边三角形任一边之长(常数)。

在微生物组组领域,我们主要利用的是基于相位网格的三元图,其特点是每一种成分在相应等边三角形的顶点的比例为100%,在其对面的线为0%,将零点线和顶点按比例划分,用以估计各成分的含量。如图1:y对面的底线代表落在底线上的所有点在y中占比为0,随着平行线逐渐靠近顶点,落在相应平行线上的点在y中的占比越来越高。

图1. 在y组中的占比逐渐增长

在解读三元图时,我们可以通过点的位置快速获得其在三个分组中的相对比例信息:目标点越靠近一角的顶点,说明他在相应的分组中比例越高;反之其相对比例就越低。根据图1,经过点的平行线在等边三角形两边的截距代表该点在对应顶点分组的占比,因此可以得出该点的在三个分组中的占比情况。如图2:过绿色点分别向三条边做平行线,然后按逆时针方向依次读取平行线在三条边的截距约为(0.33, 0.33, 0.33),因此该点在x, y, z 三个组分中的占比为0.33, 0.33, 0.33;依此原则可得出,红点占比为0.1,0.2,0.7;蓝点占比为0.2,0.7,0.1;该结果跟我们的作图代码是相符的。

data <- data.frame( x = c(0.33, 1, 2),
                    y = c(0.33, 2, 7),
                    z = c(0.33, 7, 1))

ggtern(data, aes(x = x, y = y, z = z)) + 
  geom_point(size = 3, alpha = 0.5, color = c("green", "red", 'navy')) + 
  geom_mask() +
  annotate(geom  = 'text',
           x     = c(0.33, 1, 2),
           y     = c(0.33, 2, 7),
           z     = c(0.33, 7, 1),
           vjust = c(1.5, 1.5, 1.5),
           angle = c(0, 30, 60),
           label = c("(0.33, 0.33, 0.33)", "(0.1, 0.2, 0.7)", "(0.2, 0.7, 0.1)" ),
           color = c("green", "red", 'navy')) + 
  theme_rgbw() + geom_crosshair_tern(size = 1) 

图2. 各点在x, y , z 中的占比

在微生物多样性实际分析中,由于OUTs数目繁多,我们并不需要获得如此精确的占比情况。一般来说,三元图不同的点代表不同的OTUs(其他分类水平),点的大小代表该OTUs的平均丰度(一般需要log2, log10等转换)。不仅如此,还可以对OTUs在各微环境中的丰度数据进行统计检验后,得出各OTU分别在哪种微环境中显著富集,此时三元图不仅表现出OTUs或者物种在微环境中的相对比例,还包含显著性统计结果,它打破了火山图或韦恩图两两比较的结果,总共展示了6次两两比较的结果,即每个组的富集的情况是相对于其他两组的。

实例解读

例1. 不同区域的分布差异2

图3. 三元图展示OTUs的k空间特异性(Kumar, Manoj et al., 2017)

图片描述:

三元图展示不同区域(Bulk soil, Rhizosphere soil, Endosphere)的样本的群落结构在门水平上的差异情况,每个圆点代表一个OTU,OTU的大小、颜色和位置分别代表其相对丰度、菌门水平名称和分组情况。

Distribution of OTUs and phyla across different compartments. (A) Ternary plot of all OTUs plotted based on the compartment specificity. Each circle represents one OTU. The size, color and position of each OTU represents it relative abundance, bacterial phyla and affiliation of the OTU with different compartments, respectively.

图注描述注意事项:

  1. 总述图表展示的信息:三元图展示OTUs的空间特异性;

  2. 分条叙述图片中各元素代表什么:每个圆点代表一个OTU,OTU的大小、颜色和位置分别代表其相对丰度、菌门水平名称和分组情况。

文中的图片解读:

Bacterial community structures were clearly different in the different compartments at the phylum level.These differences were mainly driven by strong relative enrichment of Firmicutes in the endosphere-derived sequence data sets, compared to their very low abundances in the bulk and rhizosphere soils. The relative abundances of Proteobacteria and Bacteroidetes increased progressively from bulk to rhizosphere soil to the endosphere, with a concomitant decrease in those of candidate division AD3, Gemmatimonadetes and Chloroflexi, which collectively constituted <4% of endosphere communities.

主要描述了比较突出的情况,如丰度较高、规律性变化或明显聚集在某区域的属。

例2. 不同区域的分布差异3

图4. 三元图展示不同取样区域中特异富集的OTUs Rafal Zgadzaj et al., 2016)

图片描述:

  1. 最上方的“Wild-type”和“Mutants”指明材料类型
  2. 三个顶点分别为三个区域,并在括号中指出显著富集的OUT数量
  3. 点的大小代表三组样品的平均相对丰度
  4. 通过颜色指示显著富集情况:Soil = 土色, rhizosphere = 橘黄色,Root = 绿色,灰色 = 两两比较中未全部显著富集的(均未富集,只相对其中一个分组富集)。

Ternary plots depicting compartment RA of all OTUs (>5 ‰) for WT samples (A; WT; n = 73) and mutant samples (B; nfr5-2, nfr5-3, nin-2, and lhk1-1; n = 118) across three soil batches (CAS8–CAS10). Each point corresponds to an OTU. Its position represents its RA with respect to each compartment, and its size represents the average across all three compartments. Colored circles represent OTUs enriched in one compartment compared with the others (green in root, orange in rhizosphere, and brown in root samples). Aggregated RAs of each group of enriched OTUs (root-, rhizosphere- and soil-enriched OTUs) in each compartment for the WT samples (C; WT; n = 73) and mutant samples (D; nfr5-2, nfr5-3, nin-2, lhk1-1; n = 118) are shown. In each compartment, the difference from 100% RA is explained by OTUs that are not significantly enriched in a specific compartment.

总结:

该图在例1的基础上添加的显著性差异比较的结果,包含了6次两两比较和三次韦恩图比较的结果,信息高度概括。同时,作者还加入了相对丰度的箱式图强化视觉信息输出;此外,通过与B图的横向比较相同的色系,明显的分布差异,一目了然。

绘图实战

由于前期数据处理是三元图主要的难点,所以在这里将数据处理和可视化分开,使用时可以随时检查bug位置,便于使用。

环境设置

本教程需要在R语言环境下运行,推荐在RStudio界面中学习。目前测试版本为:Windows 7环境,R 3.6.3和 RStudio 1.2.5033。理论上Mac、Linux系统,以及R或RStudio的更新版本是兼容的,但并没有广泛测试,有问题欢迎自行解决并在群在与同行分享经验。

按需求安装,没必要每次都运行该安装代码。

if (!requireNamespace("tidyverse", quietly = TRUE))
  install.packages("tidyverse")

if (!requireNamespace("ggtern", quietly = TRUE))
  install.packages("ggtern")

if (!requireNamespace("BiocManager", quietly = TRUE))
  install.packages("BiocManager")

if (!requireNamespace("edgeR", quietly = TRUE))
  BiocManager::install("edgeR")

数据处理

otu_table数据源:MicrobiomeStatPlot项目中的示例数据。

函数data_clean参数介绍:

  • otu: otu_table
  • design: 实验设计信息,样品信息的列名设置为samples,分组信息列名设置为group
  • type: otu_table 类型;如果是绝对丰度,一定要注明。
  • threshold: 相对丰度阈值,希望丢弃(获取)的相对丰度大小
  • times: 点的倍数变化,主要跟可视化有关,如果结果图中的legend全是小数,可以通过倍数变化将其转变为正数,也可以在可视化时自己调整,不影响其传输的丰度相对大小信息。
otu <- read.delim("otutab.txt", header = T, row.names = 1)
design <- data.frame(
  samples = colnames(otu),
  group = rep(c("KO", "WT", "OE" ),each = 6))

otu_tern <- data_clean(otu, "absolute", times = 100, design = design)

ggtern可视化

ggtern 是Nicholas Hamilton开发的,用于创建三元图的ggplot2的扩展包,详细参数和用法见官方说明文档

library(ggtern)
p <- ggtern(data = otu_tern, 
            aes(x = KO, y = OE, z = WT)) + 
  geom_mask() + 
  geom_point(aes(size = size), 
             alpha = 0.8, show.legend = TRUE) +
  scale_size(range = c(0, 6)) +
  # set legend
  guides(colour = "none") +
  theme_bw() +
  theme(axis.text = element_blank(), 
        axis.ticks = element_blank())
p

图5. 三元图展示OTUs的实验分组特异性

图片描述:

三元图展示不同处理组(KO, OE, WT)的样本的群落结构在OTUs上的丰度差异情况,每个圆点代表一个OTU,OTU的大小和位置分别代表其相对丰度和分组情况。

图注描述注意事项:

由于该图中并未全部展示所有OTUs,所以在描述的时候,最好对数据筛选的参数进行描述:

  1. 相对丰度阈值
  2. 点大小对应的平均相对丰度的倍数变化

从图中可以看到KO(基因敲除,knock-out)组与OE(过表达,over-expression)和WT(野生型,wild-type)组存在丰度差异,即基因的有无可对微生物群落的丰富度引起变化。

对部分OTUs着色

图5能够展示的信息和按top丰度着色后的可视化方案是一致的,但叙述时可以像图3一样着重介绍突出情况,比如丰度较高的OTUs有那些,富集情况很特殊的有哪些。

函数sub_OTU参数介绍:

  • data: otu_table
  • rank: 希望进行着色的丰度排名,推荐10个。如果超过10个,则需要自己制定配色方案。
plot_data <- top_OTUs(otu_tern, rank = 10)

# 配色方案
platte <- c('#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99',
            '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a')

p <- ggtern(data = otu_tern, 
            aes(x = KO, y = OE, z = WT)) + 
  geom_mask() + # 可将超出边界的点正常显示出来
  geom_point(data = plot_data[[2]], aes(size = size), color = "grey",
             alpha = 0.8, show.legend = FALSE) +
  geom_point(data = plot_data[[1]], aes(size = size, color = OTUs), 
             show.legend = TRUE) +
  scale_colour_manual(values = platte) +
  scale_size(range = c(0, 6)) +
  # legend
  guides(size = "none") +
  theme_bw() +
  theme(axis.text = element_blank(), 
        axis.ticks = element_blank())
p

图6. 三元图展示OTUs的实验分组特异性

图片描述:

三元图展示不同处理组(KO, OE, WT)的样本的群落结构在OTUs上的丰度差异情况,每个圆点代表一个OTU,OTU的大小、颜色和位置分别代表其相对丰度、OUTs名称和分组情况。 值得注意的是,红色原点所代表的ASV_5在KO组中丰度几乎为0,但在WT和OE均有相对较高的丰度。

富集显著性分析

除了上面直接展示OTUs在不同分组中的丰度富集情况,还可以通过显著性富集分析,获得在不同分组中显著富集的OTUs,最后进行可视化(例2)。

enrich_index <- enrich_data(otu, design, group, p.value = 0.5)

plot_data <- merge(otu_tern, enrich_index, by = "OTUs", all.x = TRUE)
p <- ggtern(data = plot_data, 
       aes(x = KO, y = OE, z = WT)) + 
  geom_mask() + # 可将超出边界的点正常显示出来
  geom_point(aes(size = size, color = enrich),
             alpha = 0.8) + 
  guides(size = "none") +
  theme_bw() +
  theme(axis.text = element_blank(), 
        axis.ticks = element_blank())
p

图7. 三元图展示富集OTUs

图片描述:

除了图6中的信息外,该图还展示了在KO, OE, WT三个分组中,分别相对于另外两个分组显著性富集的OTUs。

图注描述注意事项:

由于该图中并未全部展示所有OTUs,所以在描述的时候,最好对数据统计分析过程的参数进行描述:

  1. 相对丰度阈值
  2. 点大小对应的平均相对丰度的倍数变化
  3. adjust.method
  4. p.value

Reference

1. wikipedia. wikipedia (2020).

2. Kumar, M. et al. Plants assemble species specific bacterial communities from common core taxa in three arcto-alpine climate zones. Frontiers in Microbiology 8, (2017).

3. Zgadzaj, R. et al. Root nodule symbiosis in lotus japonicus drives the establishment of distinctive rhizosphere, root, and nodule bacterial communities. Proc Natl Acad Sci U S A 113, E7996–E8005 (2016).

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343