跟着Nature学作图:R语言ggtree给进化树的节点添加饼状
2022-10-03 本文已影响0人
小明的数据分析笔记本
论文
Galeaspid anatomy and the origin of vertebrate paired appendages
https://www.nature.com/articles/s41586-022-04897-6
s41586-022-04897-6.pdf
最近朋友圈好多人都在转发这篇论文,我也找来看了看,论文整体的内容我看起来还是非常吃力的,但是论文中关于进化树的作图方法我可以写个教程分享给大家
今天推文的内容重复一下论文中的Fig4a 进化树叠加图片并在节点上叠加饼状图

首先是进化树
library(ggtree)
library(scatterpie)
tree<-read.tree("data/20220930/fig4a.nwk")
ggtree(tree)+
geom_tiplab()+
xlim(NA,15)

叠加图片
ggtree(tree)+
geom_tiplab(aes(image=paste0("data/20220930/",label,".png")),
geom = "image",size=0.2,offset = 0.2)+
xlim(NA,16)+
geom_tiplab(offset = 4)

叠加饼状图
ggtree(tree)+
geom_nodelab(aes(label=node))+
geom_tiplab(aes(label=node)) -> p
library(tidyverse)
list(ggplot2::ggplot_build(p)$data[[3]],
ggplot2::ggplot_build(p)$data[[4]])%>%
bind_rows() %>%
select(y,x,node) %>%
arrange(node) %>%
write_csv("data/20220930/pie_df1.csv")
pie.df<-read_csv("data/20220930/pie_df1.csv")
pie.df
ggtree(tree,size=1)+
#geom_tiplab(offset=2)+
geom_scatterpie(data=pie.df,
aes(x=x,y=y,group=node,
r=0.4),
cols = c("Absent","Present"))+
scale_fill_manual(values = c("Absent"="white",
"Present"="#55cc81"))+
geom_tiplab(aes(image=paste0("data/20220930/",label,".png")),
geom = "image",size=0.2,offset = 0.4)+
xlim(NA,16)+
geom_tiplab(offset = 4)+
theme(legend.position = c(0.2,0.8))+
coord_fixed()

这里如何旋转每个饼状图暂时想不明白了
ggtree里有一个nodepie的函数也可以试试添加饼状图
示例数据和代码可以给推文点赞 点击在看 最后留言获取
欢迎大家关注我的公众号
小明的数据分析笔记本
小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!
