跟着Nature学画图~R语言ggtree展示进化树并添加图片注释~欢迎关注公众


1.首先得有一个生成好的进化树文件-nwk格式
up根据图片自己模拟了树文件(强啊!!!)

从树文件——nwk文件反推,各数字代表含义

2. ggtree可视化进化树
2.1 安装ggtree包
借助于BiocManager::install("ggtree") llibrary(ggtree) tree<-read.tree("nature/nature_tree_1.nwk")#读取进化树

2.2 绘制简单的树
- ggtree(tree)+geom_tiplab()
2.3 图形超出边界的情况xlim()
theme_tree2() 显示横轴的范围
- ggtree(tree)+geom_tiplab()+xlim()
#改横轴的值范围(NA,4.5 ) 宽阔不少

2.4 改变树形的线条粗细tree后面
- ggtree(tree,size=2)+geom_tiplab()+xlim()
直接在ggtree(tree,size=2)

2.5 修改标签label到树的距离
参数:offset=
- ggtree(tree,size=2)+geom_tiplab(offset=1)+xlim(NA,4.5)

up尝试了很多次才选择了0.05这个数值比较完美,自己做的话也需要多次尝试找到适合自己的树的距离
- ggtree(tree,size=2)+geom_tiplab(offset=0.05)+xlim(NA,4.5)
2.6 调整标签——物种名的字体斜体和去掉下划线_
参数:font=
- ggtree(tree,size=2)+geom_tiplab(offset=0.05,font=“italic”)+xlim(NA,4.5)
思路:替换,将下划线替换成空格
使用stringr包,str_place()里面的参数分别是:替换前内容A,需要替换的细节b,替换的那个东西c(将A中的b替换成c)===将标签中的下划线替换成空格
- library(stringr)
- str_place("a_b","_"," ")
- aes(label=str_place(label,"_"," "))

- ggtree(tree)+geom_tiplab(offset = 3,font="italic",aes(label=str_replace(label,"_"," ")))+ xlim(NA,400)
2.7 在末端添加图片
注意:
图片需放在进化树目录下
图片名需和label的名字一样
函数:image参数
还是一个映射aes的思想:将目录里的图片一一粘贴paste到树上标签旁边(给标签加图片,所以处理还是在geom_tiplab()),
还需要调整图片距离末端的远近:使用offset()或者使用PS/PDF编辑器直接挪动修改距离
- +geom_tiplab(aes(image=paste0("nature/",label,"png")),geom="image",offset=1.25,size=0.2)


- PDF编辑器修改距离和大小



与论文里的图一模一样了~优秀的小明老师