跟着iMeta学作图 | 三元相图

本期内容为:跟着iMeta学作图 | 三元图

网址:https://github.com/iMetaScience/iMetaPlot/tree/main/230127ternary

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

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

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

图片描述:

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

文中的图片解读:

  1. 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.
  1. 译文:细菌群落结构在不同的区系中明显不同。这些差异主要是由于在内圈衍生的序列数据中,与它们在大块土壤和根茎层土壤中的丰度非常低相比,坚定的相对富集。Proteobacteria和Bacteroidetes的相对丰度从大块土壤到根茎层土壤再到内圈逐渐增加,同时候选部门AD3、Gemmatimonadetes和Chloroflexi的相对丰度也随之减少,它们共同构成了内圈群落的4%以下。

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

图片描述:

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

解读:

  1. 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. 译文:三元图描述了WT样品(A;WT;n=73)和突变体样品(B;nfr5-2、nfr5-3、nin-2和lhk1-1;n=118)在三个土壤批次(CAS8-CAS10)中所有OTU(>5‰)的区间RA。每个点对应于一个OTU。其位置代表其相对于每个区室的RA,其大小代表所有三个区室的平均值。彩色圆圈代表与其他区间相比在一个区间富集的OTU(根部为绿色,根茎层为橙色,根部样本为棕色)。WT样品(C;WT;n = 73)和突变体样品(D;nfr5-2,nfr5-3,nin-2,lhk1-1;n = 118)的每组富集的OTU(根、根瘤和土壤富集的OTU)的聚合RAs被显示。在每个区室中,与100%RA的差异由在特定区室中没有明显富集的OTU解释。

加载R包

options(repos = list(CRAN = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
if (!require("devtools"))
  install.packages('devtools') 
if (!require("ggtern"))
  install.packages('ggtern')
install.packages("devtools")
devtools::install_github("microbiota/amplicon")
# 加载包
library(amplicon)
library(ggtern)

读取数据

dim(tax_phylum) # 查看数据维度,共3个样品各6个重复共18列数据

rela_tax <- apply(tax_phylum, 2, function(x) x/sum(x)) # 绝对丰度/对每一列的丰度总和得到每个物种的相对丰度
head(rela_tax)
> head(rela_tax)
                       KO1        KO2         KO3         KO4         KO5        KO6        OE1
Proteobacteria 0.617653929 0.46110070 0.577771665 0.594885187 0.712199416 0.64016542 0.50491371
Actinobacteria 0.252858323 0.39708672 0.275890968 0.276946549 0.170047613 0.23005945 0.26495472
(Unassigned)   0.067362257 0.07211575 0.039484396 0.051790005 0.038210699 0.07031817 0.07538712
Firmicutes     0.016590704 0.02050448 0.015293956 0.032593709 0.007632137 0.01740450 0.04969151
Bacteroidetes  0.028983760 0.02590566 0.075470174 0.030094192 0.051914536 0.02360610 0.03459409
Acidobacteria  0.003707922 0.00348076 0.002489016 0.002129589 0.001860521 0.00356092 0.01019826

绝对丰度/对每一列的丰度总和得到每个物种的相对丰度

rela_tax <- apply(tax_phylum, 2, function(x) x/sum(x))
> head(rela_tax)
                       KO1        KO2         KO3         KO4         KO5        KO6        OE1
Proteobacteria 0.617653929 0.46110070 0.577771665 0.594885187 0.712199416 0.64016542 0.50491371
Actinobacteria 0.252858323 0.39708672 0.275890968 0.276946549 0.170047613 0.23005945 0.26495472
(Unassigned)   0.067362257 0.07211575 0.039484396 0.051790005 0.038210699 0.07031817 0.07538712
Firmicutes     0.016590704 0.02050448 0.015293956 0.032593709 0.007632137 0.01740450 0.04969151
Bacteroidetes  0.028983760 0.02590566 0.075470174 0.030094192 0.051914536 0.02360610 0.03459409
Acidobacteria  0.003707922 0.00348076 0.002489016 0.002129589 0.001860521 0.00356092 0.01019826
rela_group_tax <- t(apply(rela_tax, 1, 
                          function(x) c(mean(x[1:6]), 
                                        mean(x[7:12]), mean(x[13:18])))) # 对每个样品的6个重复计算相对丰度均值
colnames(rela_group_tax) <- c('KO', "OE", "WT") # 对列重命名
> head(rela_group_tax)
                        KO          OE          WT
Proteobacteria 0.600629387 0.492962782 0.517005328
Actinobacteria 0.267148271 0.286652619 0.310002750
(Unassigned)   0.056546879 0.066246303 0.056116461
Firmicutes     0.018336580 0.033110576 0.008959386
Bacteroidetes  0.039329070 0.055680293 0.049950747
Acidobacteria  0.002871455 0.007273774 0.005003141

保留相对丰度较高的10个门,合并其余门的相对丰度

df <- as.data.frame(rela_group_tax)

# 对每个门额外计算一列总相对丰度用于选出高丰度的门
df$total <- rowSums(df)
# 得到排序后的数据框
sort_df <- df[order(df$total, decreasing = T),] 
 计算其他低丰度门的丰度总和
others <- colSums(sort_df[11:nrow(df),]) 
# 合并表格
df2 <- rbind(sort_df[1:10, ], others) 

计算丰度并添加分组,分别代表三元图中点的大小和颜色

df2$Abundance <- rowMeans(df2) 
gp <- c(rownames(df2)[1:10],"Others")
df2$Phylum <- factor(gp, level=gp)
> head(df2)
                                   KO         OE          WT      total  Abundance
Proteobacteria            0.600629387 0.49296278 0.517005328 1.61059750 0.80529875
Actinobacteria            0.267148271 0.28665262 0.310002750 0.86380364 0.43190182
(Unassigned)              0.056546879 0.06624630 0.056116461 0.17890964 0.08945482
Bacteroidetes             0.039329070 0.05568029 0.049950747 0.14496011 0.07248006
Cyanobacteria/Chloroplast 0.003750115 0.03581664 0.031287083 0.07085384 0.03542692
Firmicutes                0.018336580 0.03311058 0.008959386 0.06040654 0.03020327
                                             Phylum
Proteobacteria                       Proteobacteria
Actinobacteria                       Actinobacteria
(Unassigned)                           (Unassigned)
Bacteroidetes                         Bacteroidetes
Cyanobacteria/Chloroplast Cyanobacteria/Chloroplast
Firmicutes                               Firmicutes

绘图

ggtern(data=df2, aes(KO, OE, WT)) + 
  geom_point(aes(color=Phylum, size=Abundance)) +  
  theme_bw() +  
  theme_arrowdefault()
ggtern(df2, aes(KO, OE, WT))+
  geom_point(aes(color=Phylum, size=Abundance), alpha = 0.8, show.legend = F)+
  geom_mask()+  # 可将超出边界的点正常显示出来
  theme_bw() +
  theme(axis.text = element_blank(), 
        axis.ticks = element_blank())+
  theme_arrowdefault()   ## 显示方向

参考:
https://www.jianshu.com/p/c87f3a3334fd
https://mp.weixin.qq.com/s/B0dA8qIHkJfAstd3qGBOPA
https://github.com/iMetaScience/iMetaPlot/blob/main/230127ternary/


往期文章(总汇)--点击链接进入(列出部分,并非全部)

01-[R语言可视化-精美图形绘制系列]--精美火山图
02-R语言可视化-精美图形绘制系列--柱状图
03-R语言可视化-精美图形绘制系列--功能富集分析
04-R语言可视化-精美图形绘制系列—多组GO富集可视化
05-[R语言可视化-精美图形绘制系列--堆积图]
06-[R语言可视化-精美图形绘制系列--组间相关性分析]
07-[R语言可视化-精美图形绘制系列]--Mental分析
08-[R语言可视化-精美图形绘制系列--复杂热图+两图渐变连线]-【转载】
09-[R语言可视化-精美图形绘制系列--桑基图(Sankey)]
10-[R语言可视化-精美图形绘制系列--柱状图误差线标记]11-跟着NC学作图 | 柱状图与相关性图12-[R语言可视化-精美图形绘制系列--GO、KEGG富集通路关联图]
13-[跟着“基迪奥生物学”作图]--截断图14-[R语言可视化-精美图形绘制系列]--显著性箱线图
14-2[R语言可视化]--箱线图不同的画法及参数设置 | 学习笔记15-[R语言可视化-精美图形绘制系列]--组内相关性分析
16-[R语言可视化-精美图形绘制系列]--主成分分析(PCA)
17-[跟着NC学作图]--箱线图(一个函数获得Mean、SD、P值)
18-[跟着NC学作图]--生存分析(Survival analysis)
19-[跟着NC学作图]--散点图20-[R语言可视化-精美图形绘制系列]--散点图+箱线图组合图
21-[跟着NC学作图]-柱状堆积图22-[跟着NC学作图]-绘制频率分布图(图中图)
22-[R语言可视化-精美图形绘制系列]--FPI箱线图
23-跟着NC做基因组数据分析24-使用OmicCircos包--绘制基因圈图25-跟着iMeta学作图 | 棒棒图和显著相关性散点图


小杜的生信筆記 ,主要发表或收录生物信息学的教程,以及基于R的分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!!

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

推荐阅读更多精彩内容