美文网首页可借鉴的好知识各种作图
拿得出手的-热图(Heatmap)- 所有人都能画,瞬间Get

拿得出手的-热图(Heatmap)- 所有人都能画,瞬间Get

作者: 生信石头 | 来源:发表于2018-09-03 13:42 被阅读437次
    image.png

    写在前面

    有一句话说的好,

    热图,是数据可视化中不可或缺的部分 -- CJ
    

    不喜欢听我扯感悟的,请直接跳到下一节,看完推文再回来看这里。
    我曾经推过几个绝对零基础的热图绘制教程,主要包括以下途径:

    1. Excel 《使用Excel绘制热图heatmap(可得到矢量图)》 https://www.jianshu.com/p/dbbf2b98db40
    2. R语言的pheatmap 《最简单最实用的R语言热图绘制教程(没有R基础-上手只需10min)》 https://www.jianshu.com/p/3ff336a74d7a
      总的来说,我收到了不下10份私信(或者当面-同个单位的学生或老师)的感谢信息。

    因为我本科四年基本都泡在实验室,我知道,湿实验的朋友本身就是已经被实验虐得很惨了,要分心掌握各种命令行和编程语言,如果不是具有绝对充沛的精力,看起来似乎并不可能,更不提同时把湿实验和数据分析都做的很优秀
    推了那两个教程之后,我内心是不满意的

    1. Excel的操作就不解释了,我写的那个教程的操作,具有天生缺陷,最直接的一点就是,无法聚类。关于这一点,我曾经建议过一个写Excel插件(印象是叫EasyChart?)的朋友写一个,不过他似乎不感兴趣。可能我们两一样,更喜欢写引擎,而不是实例。
    2. 使用R语言,要让湿实验的朋友同时兼顾实验设计,实验开展,论文阅读和写作,以及具有一定程度的编程?,太过为难。我之前推的教程,或者网络上有的各种教程,真正能被掌握并吸收的,太少。我想大多数人能熟练替换数据并重复对应的命令,而涉及到一些图片细节的调整,可能就要懵圈,更不提画一张拿得出手的热图
    3. 其他热图的软件?优秀的软件太多,我多少也有推荐过。But,优秀的软件只能是活着(保持更新)的软件。

    事实上,我从来没有打算写一个热图工具,一切都是巧合。

    1. 在博导的要求下,我需要实现RNA二级结构的可视化,所以要解析(((((((((((())))))))((())))(())(()()))))这样的字符串,我发现解析逻辑跟进化树常见的newick文本是通用的
    2. 我早就实现过一些常见的聚类算法,hclust..kmeans...
    3. 基因组浏览器开发过程中,我需要让JIGplot支持Panel任意拼接
      正好是两个课题的需求之下,我只是想试一试是不是可以直接画热图
      答案是:是的

    从此R画热图是路人

    自从TBtools的Amaing Heatmap推出,我不断的改进,更新,迭代(当然,我其实很不想干这个事情,因为我本来就没有想要写热图工具),但是TBtools用户的需求,以及更重要的是,我发现我手上的课题一个又一个的需要更好用的热图工具,所以我不断的改进。

    一入TBtools深似海,
    从此pheatmap是路人。
    

    我所以决定保持热图工具更新,原因还有,那么就是

    1. 我需要的是一个操作极其便捷的热图
    2. 我需要的是一个可以交互的热图
    3. 我需要的是一个可以充分调整细节的热图

    一图胜千言

    写推文,事实上跟写论文差不多,要么

    1. 有好的故事
    2. 确实能吸引人的图片
      很明显,我的文笔目前而言仍是小升初的阶段。

    为了保证本文阅读量,有必要放出两三个图,以此证明,任人都拥有绘制一张拿得出手的热图的能力。这个与开核桃是一样的,你需要一个好的工具。

    最简单的热图

    image.png

    热图细微的变型

    image.png image.png

    有一定信息量的热图

    比如我增加了分组信息

    image.png
    比如,我要自定义一个进化树
    ... 这部分之前已经写过了,详细见
    《10秒-完成-进化树+热图的组合图,这有一个简单快速的解法》https://www.jianshu.com/p/2137418d53a6

    说得再多,不如实操

    我给你们准备了数据
    首先是,一个数值矩阵, Sample2Sample2Sample2...我是故意的,因为这是一个测试,测试标签倾斜功能的支持情况。注意,基因表达展示只是热图的一个用处,TBtools这个工具已经被用在标记数据或者其他各种指标可视化上,而不只有基因表达矩阵

    image.png

    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

    一个可选的行分组信息,注意,我这个只是乱编的,如果你没有分组信息就不用了

    image.png

    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

    一个可选的列分组信息,注意,我这个只是乱编的,如果你没有分组信息就不用了

    image.png

    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
    比如更换颜色
    image.png

    参数还有很多,你可以做出拿得出手的热图,当然,参数都在界面上了,可能你需要花一点时间去测试,或者猜测。当然,或许我也会考虑开一次讲演,专门讲这个功能的使用...
    但是似乎,又没有必要,因为,昨天才更新了工具,立马就有人画了出来,当然,我不是太清楚用的是什么数据,画的是什么指标....

    image.png

    写在最后

    1. 感谢所有支持TBtools继续开发的朋友,希望TBtools确实能在各位的科研工作中起到一点作用。
    2. 希望所有将TBtools用于商业化服务的公司或团队朋友,能够从不定期地在经济上支持TBtools的开发。纠纷不是我擅长的,合作共赢才是主题,当我发现专利原来挺有用的时候,我突然有种失落。。。。
      欢迎所有使用者加入TBtools使用交流群
      image.png
      欢迎所有想要支持TBtools继续开发的朋友,直接加我微信,来点实际的,不定期转账支持(这样我知道是谁。。或者哪个公司。。。)
      image.png

    离题.....

    总的来说,
    开发是一件快乐的事情,使用也是一件快乐的事情。希望大家都能简单快速地绘制拿得出手的热图,减少在可视化上所耗费的时间,拥有更多的时间,享受美好生活。

    相关文章

      网友评论

      • 孙瑞_ad95:CJ 老师想问下基因太多怎么办
        生信石头:@孙瑞_ad95 20~30w个数据点,那么不能聚类,也需要1G以上的内存。
      • JUpter_:很棒,比R方便多了, 弱弱问一句有mac版本的
        生信石头:@YangKD_ Java 工具,所有操作系统都用同一个程序

      本文标题:拿得出手的-热图(Heatmap)- 所有人都能画,瞬间Get

      本文链接:https://www.haomeiwen.com/subject/phpbwftx.html