前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟着Nature学作图:R语言ggplot2+ggtree树图组合热图

跟着Nature学作图:R语言ggplot2+ggtree树图组合热图

作者头像
用户7010445
发布2024-02-03 15:19:21
1920
发布2024-02-03 15:19:21
举报

论文

Genome evolution and diversity of wild and cultivated potatoes

今天的推文复现一下论文中的figure3c

主要的知识点是:

1、进化树中挑选子集 2、进化树默认是左下角到右上角这种布局,如何调整成左上到右下角这种布局 3、进化树把某个clade压缩成三角性状 4、给进化树添加根小尾巴

进化树的代码

代码语言:javascript
复制
library(readxl)
library(tidyverse)
library(ggtree)
read_excel("D:/Jupyter/土豆Nature/41586_2022_4822_MOESM7_ESM.xlsx",
           sheet = "Fig. 3c_2",
           skip = 1,
           col_names = FALSE) %>% 
  pull(1) %>% 
  read.tree(text = .) -> tree

ggtree(tree)+
  geom_tiplab()

tree$tip.label
keep.tips<-c("Heinz","PG0009","PG0019",
             "PG1011","PG6241","PG3022",
             "PG5068","PG6002","PG6148",
             "PG6247")

to_drop<-tree$tip.label[-match(keep.tips,tree$tip.label)]
reduced.tree<-treeio::drop.tip(tree,to_drop)

p<-ggtree(reduced.tree,
          branch.length = "none",)
p+
  geom_tiplab()

## 这个代码是给根添加一个小尾巴
## rootedge = 1 这个1是控制小尾巴的长度
p+
  geom_rootedge(rootedge = 1)

## 把指定节点进行旋转
## 把树改成左上角到右下角的形式
new.p<-ggtree::rotate(p,11)
new.p+geom_tiplab()

ggtree(reduced.tree)+
  geom_tiplab()+
  geom_nodelab(aes(label=node))

p1<-collapse(new.p,node = 13,"max",fill="white",color="black") %>% 
  collapse(node=14,"max",fill="white",color="black") 

p1

热图代码

代码语言:javascript
复制
p2<-read_excel("D:/Jupyter/土豆Nature/41586_2022_4822_MOESM7_ESM.xlsx",
           sheet = "Fig. 3c_1",
           skip = 1,
           col_names = TRUE,
           na="NA") %>% 
  rename("sample_id"="...1") %>% 
  mutate(sample_id=factor(sample_id,levels = rev(sample_id))) %>% 
  pivot_longer(!sample_id) %>% 
  mutate(new_value=scale(value),
         name=factor(name,levels = c("Root","Stem","Leaf","Stolon/Rhizome","Tuber"))) %>% 
  ggplot(aes(x=name,y=sample_id))+
  geom_tile(aes(fill=new_value),
            color="gray")+
  scale_fill_gradient(low="white",high = "red",
                      name="")+
  theme_bw(base_size = 15)+
  theme(panel.grid = element_blank(),
        axis.text.x = element_text(angle=60,hjust=0,vjust=0),
        axis.ticks = element_blank())+
  scale_x_discrete(expand = c(0,0),position = "top")+
  scale_y_discrete(expand = c(0,0))+
  labs(x=NULL,y=NULL)
p2

两个图组合到一起

代码语言:javascript
复制
library(patchwork)
p1+p2+
  plot_layout(widths = c(1,10))
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 论文
  • 进化树的代码
  • 热图代码
  • 两个图组合到一起
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档