阅读 108

跟着Nature Methods学画图:R语言ggplot2+ggtree+aplot画气泡图组合聚类树图

今天继续昨天推文的内容,今天的内容介绍如何在气泡图和左侧和上方添加聚类树图,今天的内容主要参考

https://mp.weixin.qq.com/s/XVl2MoOsT7pB1wNJmltoVw

这篇论文是在简书 土豆学生信 分享的内容看到的。简书的链接是 https://www.jianshu.com/p/bbf9cb13b41a

论文是


image.png

论文对应的代码是公开的 https://github.com/ajwilk/2020_Wilk_COVID

image.png

今天重复的内容是论文中的figure2f

image.png

按照论文提供的代码得到了画图用到的数据,部分数据如下

image.png

但是用他提供的画图代码没有能够画出图来。因为他用到了一个dot_plot()函数,没有找到这个函数是怎么来的。既然已经拿到了数据,就用ggplot2自己来画吧

读入数据做气泡图,
data.final<-read.csv("NM/figure2f.csv",header=T,check.names=F)
head(data.final)

library(ggplot2)
ggplot(data.final,aes(x=features.plot,y=id))+
  geom_point(aes(size=`Percent expressed`,
                 color=`Average expression`))+
  theme_bw()+
  theme(panel.grid = element_blank(),
        axis.text.x=element_text(angle=90,hjust = 1,vjust=0.5))+
  scale_color_gradient(low="lightgrey",high="blue")+
  labs(x=NULL,y=NULL)+
  guides(size=guide_legend(order=3))
image.png

以y轴为变量,做层次聚类,并使用ggtree展示层次聚类结果

聚类用到的是平均表达量那一列
df<-data.final[,c(1,2,4)]
首先是长格式数据转换为宽格式
df1<-reshape2::dcast(df,id~features.plot,value.var = "Average expression")
rownames(df1)<-df1$id
df1.1<-df1[,2:22]
image.png
层次聚类,ggtree展示结果
df1.1.clust<-hclust(dist(df1.1))
df2.1.clust<-hclust(dist(df2.1))
library(ggtree)
p2<-ggtree(df1.1.clust)
p2+
  geom_tiplab()+
  xlim(NA,7)
image.png
使用aplot包拼图
library(ggplot2)
p1<-ggplot(data.final,aes(x=features.plot,y=id))+
  geom_point(aes(size=`Percent expressed`,
                 color=`Average expression`))+
  theme_bw()+
  theme(panel.grid = element_blank(),
        axis.text.x=element_text(angle=90,hjust = 1,vjust=0.5))+
  scale_color_gradient(low="lightgrey",high="blue")+
  labs(x=NULL,y=NULL)+
  guides(size=guide_legend(order=3))

library(aplot)
p1%>%
  insert_left(p2,width = 0.2)
image.png
接下来就是在上方叠加聚类树,一样的操作
df2<-reshape2::dcast(df,features.plot~id,value.var = "Average expression")
rownames(df2)<-df2$features.plot
df2.1<-df2[,2:15]
df2.1.clust<-hclust(dist(df2.1))
p3<-ggtree(df2.1.clust)+
  #geom_tiplab(angle=90)+
  #theme_tree2()+
  layout_dendrogram()
p3
p1%>%
  insert_left(p2,width = 0.2)%>%
  insert_top(p3,height = 0.2)

这里多了一个知识点是ggtree作图默认开口树的方向是向右,如果需要把开口改成向下,需要加上layout_dendrogram()函数

最终的结果如下

image.png

这里和论文中的图有些不一致,可能是聚类算法的原因;ggtree有一个默认的从上到下排序,比如左侧的树现在第一个是H6,第二个是H5,如果想把H5放到第一个也是可以实现的,可以参考之前的推文 R语言ggtree按照指定的节点旋转树

欢迎大家关注我的公众号
小明的数据分析笔记本

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

作者:小明的数据分析笔记本

原文链接:https://www.jianshu.com/p/f2dc83940954

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐