写在前面
有一句话说的好,
热图,是数据可视化中不可或缺的部分 -- CJ
不喜欢听我扯感悟的,请直接跳到下一节,看完推文再回来看这里。
我曾经推过几个绝对零基础的热图绘制教程,主要包括以下途径:
- Excel 《使用Excel绘制热图heatmap(可得到矢量图)》 https://www.jianshu.com/p/dbbf2b98db40
- R语言的pheatmap 《最简单最实用的R语言热图绘制教程(没有R基础-上手只需10min)》 https://www.jianshu.com/p/3ff336a74d7a
总的来说,我收到了不下10份私信(或者当面-同个单位的学生或老师)的感谢信息。
因为我本科四年基本都泡在实验室,我知道,湿实验的朋友本身就是已经被实验虐得很惨了,要分心掌握各种命令行和编程语言,如果不是具有绝对充沛的精力,看起来似乎并不可能,更不提同时把湿实验和数据分析都做的很优秀。
推了那两个教程之后,我内心是不满意的。
- Excel的操作就不解释了,我写的那个教程的操作,具有天生缺陷,最直接的一点就是,无法聚类。关于这一点,我曾经建议过一个写Excel插件(印象是叫EasyChart?)的朋友写一个,不过他似乎不感兴趣。可能我们两一样,更喜欢写引擎,而不是实例。
- 使用R语言,要让湿实验的朋友同时兼顾实验设计,实验开展,论文阅读和写作,以及具有一定程度的编程?,太过为难。我之前推的教程,或者网络上有的各种教程,真正能被掌握并吸收的,太少。我想大多数人能熟练替换数据并重复对应的命令,而涉及到一些图片细节的调整,可能就要懵圈,更不提画一张拿得出手的热图
- 其他热图的软件?优秀的软件太多,我多少也有推荐过。But,优秀的软件只能是活着(保持更新)的软件。
事实上,我从来没有打算写一个热图工具,一切都是巧合。
- 在博导的要求下,我需要实现RNA二级结构的可视化,所以要解析
(((((((((((())))))))((())))(())(()()))))
这样的字符串,我发现解析逻辑跟进化树常见的newick文本是通用的 - 我早就实现过一些常见的聚类算法,hclust..kmeans...
- 基因组浏览器开发过程中,我需要让JIGplot支持Panel任意拼接
正好是两个课题的需求之下,我只是想试一试是不是可以直接画热图
答案是:是的
从此R画热图是路人
自从TBtools的Amaing Heatmap推出,我不断的改进,更新,迭代(当然,我其实很不想干这个事情,因为我本来就没有想要写热图工具),但是TBtools用户的需求,以及更重要的是,我发现我手上的课题一个又一个的需要更好用的热图工具,所以我不断的改进。
一入TBtools深似海,
从此pheatmap是路人。
我所以决定保持热图工具更新,原因还有,那么就是
- 我需要的是一个操作极其便捷的热图
- 我需要的是一个可以交互的热图
- 我需要的是一个可以充分调整细节的热图
一图胜千言
写推文,事实上跟写论文差不多,要么
- 有好的故事
- 有确实能吸引人的图片
很明显,我的文笔目前而言仍是小升初的阶段。
为了保证本文阅读量,有必要放出两三个图,以此证明,任何人都拥有绘制一张拿得出手的热图的能力。这个与开核桃是一样的,你需要一个好的工具。
最简单的热图
image.png热图细微的变型
image.png image.png有一定信息量的热图
比如我增加了分组信息
比如,我要自定义一个进化树
... 这部分之前已经写过了,详细见
《10秒-完成-进化树+热图的组合图,这有一个简单快速的解法》https://www.jianshu.com/p/2137418d53a6
说得再多,不如实操
我给你们准备了数据
首先是,一个数值矩阵, Sample2Sample2Sample2...我是故意的,因为这是一个测试,测试标签倾斜功能的支持情况。注意,基因表达展示只是热图的一个用处,TBtools这个工具已经被用在标记数据或者其他各种指标可视化上,而不只有基因表达矩阵
Gene Sample_1 Sample_2Sample_2Sample_2Sample_2 Sample_3 Sample_4 Sample_5 Sample_6 Sample_7 Sample_8
BrrMTP1.1 1.006681 0.563866 0.160069 7.754735 8.825019 0.47467 0.484845 1.762994
BrrMTP1.3 1.002123 0.945275 0.62328 9.573644 2.048343 1.25904 0.906506 0.91447
BrrMTP2 1.017214 0.711344 0.669611 17.44133 1.821161 0.39549 0.360295 0.402843
BrrMTP4 1.00027 0.839946 1.353644 33.01645 4.147345 0.621644 0.658879 1.183962
BrrMTP5 1.001491 1.2521 1.210321 5.792977 2.676009 0.922478 0.897902 1.894602
BrrMTP6 1.001114 0.807745 1.137013 8.10874 2.998962 2.224567 1.986114 2.805817
BrrMTP7.1 1.001238 1.777761 0.818896 6.038914 0.525945 0.474859 0.541612 1.368142
BrrMTP7.2 1.001013 0.756476 0.942495 2.144637 1.938059 0.833577 0.841005 1.029887
BrrMTP8.1 1.000004 0.88795 0.696484 10.48041 2.077439 0.577908 0.753547 0.914806
BrrMTP8.2 1.003881 0.72428 0.300538 1.380168 0.431501 0.599682 0.689021 0.543888
BrrMTP8.3 1.000203 0.780874 0.863709 2.792959 1.098378 1.538392 1.422587 1.244377
BrrMTP9 1.006817 1.044413 1.038633 0.898374 2.088197 1.485521 1.519249 0.817726
BrrMTP10.1 1.001525 0.336323 0.8546 0.51132 0.972801 0.940599 0.480084 0.528944
BrrMTP10.2 1.008213 0.601609 1.021994 3.040573 2.837756 0.696304 0.98926 1.43656
BrrMTP11.1 1.032052 0.423682 0.577266 0.920469 6.688583 0.793847 0.69144 0.93308
BrrMTP11.2 1.002837 0.304894 1.200059 1.401765 0.666994 0.337271 0.257105 0.606956
BrrMTP12 1.005418 1.188224 1.004819 4.081349 1.933769 0.737466 0.638889 1.128978
一个可选的行分组信息,注意,我这个只是乱编的,如果你没有分组信息就不用了
Stage Group_1 BrrMTP1.1
Stage Group_1 BrrMTP1.3
Stage Group_1 BrrMTP2
Stage Group_1 BrrMTP4
Stage Group_1 BrrMTP5
Stage Group_1 BrrMTP6
Stage Group_1 BrrMTP7.1
Stage Group_1 BrrMTP7.2
Stage Group_1 BrrMTP8.1
Stage Group_3 BrrMTP10.2
Stage Group_3 BrrMTP11.1
Stage Group_3 BrrMTP11.2
Stage Group_3 BrrMTP12
Stage Group_2 BrrMTP8.2
Stage Group_2 BrrMTP8.3
Stage Group_2 BrrMTP9
Stage Group_2 BrrMTP10.1
Cultivar Group_1 BrrMTP1.1
Cultivar Group_1 BrrMTP1.3
Cultivar Group_1 BrrMTP2
Cultivar Group_1 BrrMTP4
Cultivar Group_1 BrrMTP5
Cultivar Group_1 BrrMTP6
Cultivar Group_1 BrrMTP7.1
Cultivar Group_1 BrrMTP7.2
Cultivar Group_1 BrrMTP8.1
Cultivar Group_2 BrrMTP8.2
Cultivar Group_2 BrrMTP8.3
Cultivar Group_2 BrrMTP9
Cultivar Group_2 BrrMTP10.1
Cultivar Group_3 BrrMTP10.2
Cultivar Group_3 BrrMTP11.1
Cultivar Group_3 BrrMTP11.2
Cultivar Group_3 BrrMTP12
一个可选的列分组信息,注意,我这个只是乱编的,如果你没有分组信息就不用了
Exp Treatments Sample_1
Exp Treatments Sample_2Sample_2Sample_2Sample_2
Exp Treatments Sample_3
Exp Treatments Sample_4
Exp CK Sample_5
Exp CK Sample_6
Exp CK Sample_7
Exp CK Sample_8
Rep Rep_1 Sample_1
Rep Rep_2 Sample_2Sample_2Sample_2Sample_2
Rep Rep_3 Sample_3
Rep Rep_4 Sample_4
Rep Rep_1 Sample_5
Rep Rep_2 Sample_6
Rep Rep_3 Sample_7
Rep Rep_4 Sample_8
有了数据就很简单了,拖拖拖就可以了
此时你已经得到一张可以看的热图了,但是你可能想要一个特别的操作,比如聚类
image.png
比如更换颜色
image.png
参数还有很多,你可以做出拿得出手的热图,当然,参数都在界面上了,可能你需要花一点时间去测试,或者猜测。当然,或许我也会考虑开一次讲演,专门讲这个功能的使用...
但是似乎,又没有必要,因为,昨天才更新了工具,立马就有人画了出来,当然,我不是太清楚用的是什么数据,画的是什么指标....
写在最后
- 感谢所有支持TBtools继续开发的朋友,希望TBtools确实能在各位的科研工作中起到一点作用。
- 希望所有将TBtools用于商业化服务的公司或团队朋友,能够从不定期地在经济上支持TBtools的开发。纠纷不是我擅长的,合作共赢才是主题,当我发现专利原来挺有用的时候,我突然有种失落。。。。
欢迎所有使用者加入TBtools使用交流群
image.png
欢迎所有想要支持TBtools继续开发的朋友,直接加我微信,来点实际的,不定期转账支持(这样我知道是谁。。或者哪个公司。。。)
image.png
离题.....
总的来说,
开发是一件快乐的事情,使用也是一件快乐的事情。希望大家都能简单快速地绘制拿得出手的热图,减少在可视化上所耗费的时间,拥有更多的时间,享受美好生活。
网友评论