介绍
三元图通常用于三组数据两两比较,可以展示三组间的相对基因表达或者物种丰度等。 三元图是重心图的一种,它有三个变量,但需要三者总和为恒定值。在一个等边三角形坐标系中,图中某一点的位置代表三个变量间的比例关系。常用于物理化学、岩石学、矿物学、冶金学和其它物理科学,用于表示在同一个系统中三组分间的比例。在群体遗传学中,它被称做Finetti图;在博弈论中,常被称为simplex图。
A ternary plot, ternary graph, triangle plot, simplex plot, Gibbs triangle or de Finetti diagram is a barycentric plot on three variables which sum to a constant. It graphically depicts the ratios of the three variables as positions in an equilateral triangle. It is used in physical chemistry, petrology, mineralogy, metallurgy, and other physical sciences to show the compositions of systems composed of three species. In population genetics, it is often called a de Finetti diagram. In game theory, it is often called a simplex plot.
解读
- 位置信息: 点的位置信息反映了点与组分(某个角)之间的距离信息,距离反映了相对比例的高低
- 解读三组比例:
- 双平行线/小等边三角形法:由点向底边做两条平行线建立小正三角形,将底边分成三段,中间为顶部组所占比例,左段为右侧组比例,右段为左侧组比例。
- 垂线法:点向三条边做垂线,穿越的格数,即对角组中所占比例;
- 向各边零坐标方向作平行线法:按坐标系组的颜色和数值直接读各组比例;(图中所示方法,A和B均略大于0.3,而C接近0.4)
-
规律:
- 三角形边平等线上的点,在平行线对应的顶点组所占比例是恒定的。
- 顶点到底边直线上的点,上面任意点中两底角组相对比例恒定。
点大小:为了防止点过大或者过小,在基因或者物种丰度分析时候,需要进行log10转换
-
优点:
- 打破了普通两两比较火山图展示方式,可将三组两两比较和三组的相对关系展示在同张图中;
- 两组只能比较一次,三组可以比较三次,可説的结果非常多;
- 三是个非常好的数字,2组比较太常见且单调,4组及以上信息量大让人晕,三组正好高端大气上档次,而且还有内涵
案例
百脉根根瘤的微生物组成,同时在根瘤缺失突变体条件下发现根和根际微生物均有较大差异的变化。
图4.A/B 三元图展示同一基因型百脉根不同取样区域/生态位(Compartment)中特异OTU。
C/D 用箱线图进一步展示上面发现的每类显著富集OTU的总体相对丰度
- 图中元素解释,以A图为例
- 最上方的黑体加粗Wild-type表示此图的材料类型为野生型,与B图中的Mutant突变体对应;
- 图中三角顶点分别为三种compartment,括号中数量为此组中显著富集的OTU数量;
- 图中点的大小代表三组样品的组内平均值,再求平均值的相对丰度,
- 位置代表在三组中相对比例,离那个顶点近就是其在此顶点组相对于其它组更高;
- 颜色代表OTU在三组中两两比较的显著富集情况,与上图只比较了两次不同;此图比较了6次,以Soil特异富集的棕色OTU为例说明:先进行Soil与Root比较确定Soil中显著富集的OTU,再将Soil与Rhizosphere比较确定Soil中显著富集的OTU,再将这两组显著富集OTU取交集,并将图中相应的点标记为棕色;同理另外两组Root和Rhizosphere中标记显著富集的OTU,都是需要两次比较,再取并集得出来的。可见此图的计算过程有多大的工作量。图中其它非两次比较显著富集共有OTU均标为灰色,作为背景色。
- 下面的箱线图对应上方的三元图,展示这些找到的各compartment特异的OTU在不同部分中的相对丰度分布;
- 图表结果:图中显示了各实验组中相对于其它两组特异富集的OTU的数量和相对丰度情况,而且看到了野生型(A)和突变体(B)中明显的变化,如突变体中根特异的OTU减少,而根际特异增加这种明显的样式,以说明该基因对根和根际微生物组的影响。
- 经验和技巧:三元图三组特异富集图(本图样式),本质上是6次两两比较和三次韦恩图比较的结果,信息高度概括,并从多方面展示,非常值得使用;同时两个三元图并列,让读者去找差异,即让读者参与,又让发现的差异深入人心;本图结合箱线图,进一步展示找到的差异,从丰度水平进行对比,结果更直观.
实现
- 使用ggtern包,修饰图请看引用2.
library(ggtern)
library(dplyr)
data(Feldspar)
Feldspar <- Feldspar %>% arrange(desc(P.Gpa))
ggtern(data = Feldspar, aes(x = Ab, y = An, z = Or)) +
#the layers
geom_mask() + #MASK UNDER POINTS
geom_point(aes(fill = T.C,
size = P.Gpa,
shape = Feldspar)) +
#scales
scale_shape_manual(values = c(21, 24)) +
scale_size_continuous(range = c(2.5, 7.5)) +
scale_fill_gradient(low = 'green', high = 'red') +
#tweak guides
guides(shape= guide_legend(order =1,
override.aes=list(size=5)),
size = guide_legend(order =2),
fill = guide_colourbar(order=3)) +
#labels and title
labs(size = 'Pressure/GPa',
fill = 'Temperature/C') +
#theme tweaks
theme_bw() +
theme_showarrows() +
theme(legend.position = c(0, 1),
legend.justification = c(0, 1),
legend.box.just = 'left')
- Ternary包,
library(Ternary)
TernaryPlot(point="up", atip='A', btip='B', ctip='C',
alab='Aness', blab='Bness', clab='Cness')
TernaryText(list(A=c(10, 1, 1), B=c(1, 10, 1), C=c(1, 1, 10)),
col=cbPalette8[4], font=2)