今天的推文内容是模仿论文 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、生物信息学入门学习资料及自己的学习笔记!