跟着Gut学画图:R语言ggtree包画弦图的简单小例子

2021-08-31 17:46:11 浏览数 (1)

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

image.png

image.png

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

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格式的树文件

image.png

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

画一个树形图展示一下

代码语言:javascript复制
library(ggtree)
library(treeio)

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

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

image.png

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

image.png

代码

代码语言:javascript复制
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 )

image.png

接下来是连线的数据

image.png

代码

代码语言:javascript复制
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"))

最终结果

image.png

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

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

欢迎大家关注我的公众号

小明的数据分析笔记本

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

0 人点赞