pheatmap类属性:一个更好用的pheatmap
pheatmap
我其实用的次数不多,但在帮别人解决一些问题之后,比如:
我发现这包的交互能力是比较差的,它就像传统的plot
函数一样,命令一打下去,就直接画图,虽然它其实是有输出的,但事实上超出了一般用户的理解能力,它的输出,比如说可以用cowplot
来拼图,我在上面链接的那篇文章中皆来演示,然而很多人问我,怎么把pheatmap
画的热图和ggplot2
的图,用cowplot
来拼。这就是因为拼图的方法超出了很多的理解范围,看过演示,也只能照猫画老虎,过后也就忘记了。有没有办法用大家可以理解的方法来拼?这样就不太容易忘记,答案是肯定的,我下次再讲。今天先讲一讲其前提条件。
pheatmap
上一版本是2015年发布的,2018年5月发布了一个新版本:
Version 1.0.10
- Fixed the blank page issue for RMarkdown notebooks and printing heatmaps to pdf without using filename parameter
- Can set color of NA now
- Output now is a pheatmap object with same slots as previously, but it has also print and grid.draw functions (thanks Guangchuang Yu)
主要是由我贡献的,我给pheatmap
的输出加了个类属性,这样在画图上,可以好比ggplot2
一样。这其实是我写《扪心自问,meme几何?》时,思考的结果。
比如:
library(pheatmap)
d = matrix(rnorm(100), ncol=10)
## 如果不加silent=T,会有画图窗口出来,但结果一样。
p = pheatmap(d, silent=T)
这样p
就存了一个pheatmap
对象,这个对象,你在R命令行上打p
回车,图就画出来,好像ggplot2
一般的体验,这是因为我相应地写的print
方法。
然后我还写grid.draw
的方法,这样子你就可以使用ggsave
来保存p
为图文件,比如:
ggsave(p, filename="pretty_heatmap.pdf")
这样子就不是一条命令出图,而是出对象,对象在需要的时候出图,而且方便我们输出文件,交互性就更强了,体验上升了很多。
这个类属性,还不止这些好处,有了类属性,我们可以写其它方法,这也是文章开头说的,实现一种大家都很容易理解的方式来允许cowplot
拼pheatmap
的基础,先卖个关子,敬请期待。