今天的推文内容是模仿论文 ​​Aberrant gut microbiota alters host metabolome and impacts renal failure in humans and rodents​​ 中的Figure3A

跟着Gut学画图:R语言ggtree包画弦图的简单小例子_公众号 image.png

跟着Gut学画图:R语言ggtree包画弦图的简单小例子_数据分析_02 image.png

R语言里​​circlize​​​这个包应该可以实现,最近在学习​​ggtreeExtra​​,对应的论文里有一个图

跟着Gut学画图:R语言ggtree包画弦图的简单小例子_数据分析_03 image.png

最内圈基本是一样的,实现这个内圈的函数是​​ggtree​​​包的​​geom_taxalink()​​​函数,这里我用4.0.3版本的R和2.4.1版本的ggtree会遇到报错 ​​Error in numnotnull("fontsize") : object '.pt' not found​​,暂时不知道是什么原因,我安装了4.1.0版本的R和3.0.2版本的ggtree就没有这个报错

下面介绍代码

首先是自己准备一个newick格式的树文件

跟着Gut学画图:R语言ggtree包画弦图的简单小例子_数据分析_04 image.png

同一个组的数据用括号括起来,中间逗号分隔,不同组之间用逗号分隔,最后一个括号将所有内容括到一起,最后是一个分号

画一个树形图展示一下

library(ggtree)
library(treeio)

tree<-read.tree("example.txt")

ggtree(tree,layout = "circular")+
geom_tiplab()

跟着Gut学画图:R语言ggtree包画弦图的简单小例子_数据分析_05 image.png

接下来是一个分组文件用来给tip映射颜色

跟着Gut学画图:R语言ggtree包画弦图的简单小例子_公众号_06 image.png

代码

df1<-read.delim("tip_group.txt")
head(df1)

tree<-full_join(tree,df1,by="label")

col<-c("#f04334","#99ca67","#994da5")

ggtree(tree,layout = "circular")+
geom_tiplab(aes(color=group))+
scale_color_manual(values = col )

跟着Gut学画图:R语言ggtree包画弦图的简单小例子_公众号_07 image.png

接下来是连线的数据

跟着Gut学画图:R语言ggtree包画弦图的简单小例子_数据_08 image.png

代码

ggtree(tree,layout = "inward_circular",
xlim = c(40,NA),
alpha=0)+
geom_tiplab(aes(color=group),show.legend=F)+
scale_color_manual(values = col )+
ggnewscale::new_scale_color()+
geom_taxalink(data=df2,
mapping=aes(taxa1=taxa1,
taxa2=taxa2,
color=group1),
hratio=3)+
scale_color_manual(values = c("#2398c5","#febf68"))

最终结果

跟着Gut学画图:R语言ggtree包画弦图的简单小例子_数据_09 image.png

这里还用到了​​ggnewscale​​这个包,如果是第一次使用需要安装


示例数据和代码放到了今天 ​次条推文的留言区​ 次条推文是一个广告


欢迎大家关注我的公众号

小明的数据分析笔记本


小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!