R语言ggtreeExtra给环形进化树添加热图注释

在一个交流群里看到有人问如下图的做法

图片

image.png
这个用R语言的ggtree加ggtreeExtra可以很方便的实现
可以参考这个链接
https://bioconductor.org/packages/devel/bioc/vignettes/ggtreeExtra/inst/doc/ggtreeExtra.html
ggtree和ggtreeExtra的安装需要用BiocManager
关于ggtree的安装我之前录制过视频介绍,可以去翻翻我的B站 小明的数据分析笔记本
构造数据集的代码

library(ggtree)
library(ggplot2)
library(ggtreeExtra)

rtree(30) -> tree

?rtree

dat01<-data.frame(y=paste0(“t”,1:30),
group01=sample(c(“A”,”B”),30,replace = TRUE))

dat01

dat02<-data.frame(y=paste0(“t”,1:30),
group02=sample(c(“BB”,”AA”,”DD”),30,replace = TRUE))

dat02

dat03<-data.frame(y=paste0(“t”,1:30),
group02=sample(1:100,30,replace = TRUE))

dat03

treeio::write.tree(tree,file = “2024.data/20240705/example.tree”)
readr::write_csv(dat01,file = “2024.data/20240705/annoTree01.csv”)
readr::write_csv(dat02,file = “2024.data/20240705/annoTree02.csv”)
readr::write_csv(dat03,file = “2024.data/20240705/annoTree03.csv”)
如果想要画推文开头的图,自己手头的数据需要有
1 进化树
2 注释数据
注释数据的格式

image.png
第一列是进化树里的tip label 这个需要完全匹配,因为有的进化树的tiplabel可以会有空格或者特殊字符之类的,这个数据准备的时候需要仔细。如果有很多圈需要注释,依次准备成这个格式就可以了
读取进化树作图

tree<-read.tree(“2024.data/20240705/example.tree”)
tree

p<-ggtree(tree,layout = “fan”,open.angle=0)+
geom_tiplab()
p

image.png
第一圈的热图注释

library(tidyverse)
dat01<-read_csv(“2024.data/20240705/annoTree01.csv”) p+ geom_fruit(data = dat01, geom = geom_tile, aes(y=y,fill=group01), color=”black”,offset = 0.1)+ scale_fill_manual(values = c(“#e59f01″,”#56b4e8”))+ ggnewscale::new_scale_fill() -> p1
p1

image.png
如果有更多数据就继续叠加geom_fruit()代码就可以

p1+
geom_fruit(data = dat03,
geom = geom_tile,
aes(y=y,fill=group03),
color=”black”,offset = 0.1)+
scale_fill_material_c(guide=guide_legend(order=1))+
new_scale_fill() -> p2

p2

p2+geom_fruit(data = dat02,
geom = geom_tile,
aes(y=y,fill=group02),
color=”black”,offset = 0.2)+
scale_fill_manual(values = c(“#0072b1″,”#d55e00″,”#cc79a7”),
guide=guide_legend(order=2))

image.png
我这边最开始遇到了报错 Error in scale$guide == “none” : ,暂时不知道具体是什么原因。我重新安装了ggnewscale就可以了,应该是ggnewscale版本不匹配;offset的值和图上呈现的空间具体有什么关系暂时没有搞懂。这个参数需要调整好多次,能够调整出来一个比较合适的值

image.png
欢迎大家关注我的公众号
小明的数据分析笔记本

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/418600.html

(0)
联系我们
联系我们
分享本页
返回顶部