听说你想把pheatmap和ggplot2拼在一起
在《一个更好用的pheatmap》一文中介绍了pheatmap的新功能,它输出为一个pheatmap的对象,这个对象在终端上打出来,会出来图,你可以用ggplot2::ggsave()来保存图片,文章的结尾处卖了一个关子,就是用cowplot来拼,这个有许多人问过我,因为大家一般都认为cowplot只能用于ggplot2的输出,pheatmap感觉好像不太行,而且在很多人的感觉中,画图代码不是ggplot2写的,就是base写的,而pheatmap看上去就像是base一般,其实它是grid写的,我在下面两篇文章中都有示例代码,用于拼pheatmap,不过一般人看过了,也只是留下一点印象,终究还是记不住,因为涉及到grid的知识。
现在我们有一种你一定能记得住的方法了,以后再也不用问pheatmap怎么拼图了,首先pheatmap产生的是一个对象,然后这个对象我们可以用ggplot2给画出来,然后自然而然你能够用cowplot去拼,再熟悉不过了,如果这都不能理解记住,那我也没办法了。
有个pheatmap的输出
d <- matrix(rnorm(100), ncol=10)
library(pheatmap)
p <- pheatmap(d)
转为ggplot对象
require(ggplotify)
g = as.ggplot(p)
画另一个图,并拼在一起
g2 = DOSE::simplot(d)
cowplot::plot_grid(g, g2, ncol=2)
三步曲,就是这么简单,这是一个通过的方式,来一个对象,转成ggplot,拼图,打完收工。好像《转UpSet图为ggplot?》一样,能转的对象还有很多,这样第一可以方便我们拼图,第二可以方便我们图上嵌图,而这两个妙处,皆在《转UpSet图为ggplot?》一文中有所展示,当然还有第三个好处,比如你想在这张热图上加点什么,你去改pheatmap的代码试试,我则笑而不语地用ggplot2把事情干了。ggplotify前世今生,请猛击《ggplotify简史》。