日常瞎掰
近日看到一段话,非常的有意思,拿出来与大家一同品味:
“18岁的你很好,不是因为你,而是因为18岁;28岁的你很好,不是因为28岁,而是因为你;不知不觉中我们就到了需要给年龄赋值的阶段.......”
轻描淡写中似乎道出了一些当今社会年轻人的压力根源,“不是因为自己想要什么,而是社会赋予地应该要什么.......”
言归正传,今天来说说如何用RNAseq的数据来做聚类树。为什么会有这样的需求?因为有人特意过来找我们做样本的聚类树,他们测了十几个RNAseq的样本,分成野生型和突变体两大类,每种类型做了三种处理,每种处理做了三个重复,最后想看看这十几个样本的关系远近。当我听到的时候,首先想到是用PCA和聚类热图的方式来展示。可是他们觉得这样看起来不够直接,没有像进化树那样一眼就能知道关系的远近。那就做个聚类树看看吧。
聚类树
废话不多说,下面我们用模拟的RNAseq数据来演示如何做聚类树:
mat <- matrix(rnorm(360),ncol=18)
colnames(mat) <- paste0('sample',seq(1,18))
rownames(mat) <- paste0('gene',seq(1,20))
sample1 sample2 sample3 sample4 sample5
gene1 -1.302396 0.28176220 0.4711619 1.9287826 -0.4354538
gene2 1.113912 0.07626671 -0.3509515 -0.8295646 1.3269478
gene3 1.329852 0.46562396 0.4500004 0.3439561 0.3850029
gene4 -0.167927 0.03983575 -1.8150466 -0.6601300 0.1458969
gene5 -2.465123 -2.22629204 0.3528369 -1.4327633 1.3690882
hc <- hclust(dist(t(mat)))
plot(hc)
结果如下图所示:
做一个聚类树,上面的几行代码就可以轻松实现,如果你想稍微让图漂亮一些,比如让树的分支下面对齐,可以做一些修改添加一些代码:
dend <- as.dendrogram(hc)
plot(dend)
结果如下图所示:
上面的图基本已经符合聚类树的审美了,如果还想要更个性的一点图,R基础语言实现其他就有点麻烦了,不过咱们可以用别人写好的R包——ggdendro。
install.packages('ggdendro')
library(ggdendro)
ggdendrogram(hc)
结果如下图:
可以看到用ggdendro
包画聚类树也是相当的简单,但有更多的好处是该包出的图是基于ggplot对象,这样就可以根据自己的需要任意修改,这应该是一件很美妙的事。
结束语
上面的代码画一个聚类树肯定没有问题了,如果你还想对图做更多的事情,那就不得不提Y叔的R包ggtree了,这可是专门用来处理进化树的工具,不管是注释还是更高级的可视化肯定可以满足你的需求。今天就分享到这么多了~
网友评论