首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >跟着BMC genomics学作图:R语言ggplot2+ggtree进化树拼接三角热图

跟着BMC genomics学作图:R语言ggplot2+ggtree进化树拼接三角热图

作者头像
用户7010445
发布2021-10-25 10:54:57
发布2021-10-25 10:54:57
2.1K0
举报

image.png

有读者在公众号留言问这个图的实现办法,今天的推文介绍一下这个图的R语言实现代码

这个图示物种的进化树,热图展示的是kaks的值

首先是进化树的数据

image.png

nwk格式的树文件

还有一个物种的分组文件

image.png

加载用到的R包

代码语言:javascript
复制
library(ggtree)
library(treeio)
library(readxl)
library(ggplot2)
library(tidyverse)

library(patchwork)
library(see)

左侧进化树作图

代码语言:javascript
复制
tree<-read.tree("sample.nwk")
tip.group<-read.csv("sample_group.csv")
tip.group
tree.a<-full_join(tree,tip.group,by="label")

as_tibble(tree.a) %>% 
  as.data.frame()

p1<-ggtree(tree.a,
       branch.length = "none",
       aes(color=group))+
  geom_tiplab(offset = 0.1)+
  theme(legend.position = "none")+
  scale_y_reverse()+
  scale_color_manual(values = c("#cc340c",
                                "#13a983",
                                "#3f60aa"),
                     na.value="black")
p1

image.png

热图数据

image.png

热图作图代码

代码语言:javascript
复制
df<-read_excel("example.xlsx")
df %>% pivot_longer(!sample,
                    names_to = "sample1",
                    values_to = "kaks") -> df1
df1$sample<-factor(df1$sample,
                   levels = rev(df$sample))
df1$sample1<-factor(df1$sample1,
                   levels = df$sample)
p2<-ggplot(data=na.omit(df1),aes(x=sample,y=sample1))+
  geom_tile(aes(fill=kaks),color="grey")+
  scale_fill_bluebrown_c()

p2

df1 %>% 
  filter(sample == sample1) -> df2

p2+
  geom_tile(data=df2,aes(x=sample,
                         y=sample1),
            fill="white",color="grey")+
  #theme_void() +
  theme(axis.text = element_text())-> p2.1

p2.2<-p2.1+theme(axis.title = element_blank(),
           axis.text.y = element_blank(),
           axis.ticks = element_blank(),
           panel.background = element_blank(),
           legend.position = c(0.9,0.8))
p2.2

image.png

下侧进化树作图

代码语言:javascript
复制
p3<-ggtree(tree.a,
       branch.length = "none",
       aes(color=group))+
  #geom_tiplab()+
  theme(legend.position = "none")+
  #scale_y_reverse()+
  coord_flip()+
  scale_color_manual(values = c("#cc340c",
                                "#13a983",
                                "#3f60aa"),
                     na.value="black")
p3

image.png

最后是拼图

代码语言:javascript
复制
(p1+xlim(0,8)+p2.2+
    plot_spacer()+p3)+
  plot_layout(ncol=2,
              widths = c(0.5,3),
              heights = c(3,0.5))

image.png

欢迎大家关注我的公众号

小明的数据分析笔记本

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

这里新学到的一个知识点是拼图的时候可以使用plot_spacer()函数占据一个空白位置

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先是进化树的数据
  • 加载用到的R包
  • 左侧进化树作图
  • 热图数据
  • 热图作图代码
  • 下侧进化树作图
  • 最后是拼图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档