美文网首页
跟着iMeta学作图 | 三元相图

跟着iMeta学作图 | 三元相图

作者: 小杜的生信筆記 | 来源:发表于2023-02-03 11:52 被阅读0次

本期内容为:跟着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的分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!!

相关文章

网友评论

      本文标题:跟着iMeta学作图 | 三元相图

      本文链接:https://www.haomeiwen.com/subject/fscnhdtx.html