构建系统发育树bioinformatics

跟着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 进化树叠加图片并在节点上叠加饼状图

image.png

首先是进化树

library(ggtree)
library(scatterpie)


tree<-read.tree("data/20220930/fig4a.nwk")

ggtree(tree)+
  geom_tiplab()+
  xlim(NA,15)
image.png

叠加图片

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)
image.png

叠加饼状图

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()

image.png

这里如何旋转每个饼状图暂时想不明白了

ggtree里有一个nodepie的函数也可以试试添加饼状图

示例数据和代码可以给推文点赞 点击在看 最后留言获取

欢迎大家关注我的公众号

小明的数据分析笔记本

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

image.png
上一篇下一篇

猜你喜欢

热点阅读