真的,每次看到有人花几千块买那种“零基础三天精通可视化”的课,我就想笑。咱们做geo的,谁不是从对着满屏红色报错代码发呆过来的?今天不整那些虚头巴脑的理论,就聊聊怎么用最土、最笨、但绝对管用的办法,搞定那个让人头秃的热图。我知道很多人一听到R语言就腿软,觉得那是程序员的事,跟咱们搞生物信息、搞地质分析的没关系。错!大错特错!只要你会复制粘贴,你就能做。
先说个真实案例。上周有个师弟,拿着他的RNA-seq数据找我,说要用geo r语言做热图,结果跑了一晚上,屏幕上一片白,连个格子都出不来。我一看代码,好家伙,聚类函数用错了,还忘了转log2,这数据本身就是负数,不报错才怪。这种低级错误,我入行第九年还犯过两次,别觉得自己聪明,数据清洗这步要是偷懒,后面全是垃圾。
做热图,核心就两步:数据准备和绘图。别一上来就搞什么复杂的自定义主题,先让图出来,再谈美不美。我一般推荐用pheatmap这个包,虽然ggplot2很火,但对于热图来说,pheatmap的默认参数已经足够好看了,省得你调半天颜色映射。
这里有个大坑,很多人不知道。你的输入数据必须是纯数字矩阵!如果你直接拿原始表达量矩阵扔进去,特别是包含基因名或者样本名作为列名的时候,一定要记得把第一列提取出来作为rownames,剩下的转成numeric类型的矩阵。我有一次就是因为没注意,把样本名当成了数值处理,结果聚类出来的树状图乱七八糟,跟预期完全相反。那时候我急得把键盘都砸了,后来冷静下来一行行检查数据类型,才发现是factor类型没转过来。这种细节,书上可不写,都是血泪教训。
关于配色,千万别用默认的那套红蓝渐变,太俗!而且对于有正负值的数据,比如差异表达分析,中间值最好是白色,这样正负差异对比才明显。我现在的习惯是,先定一个调色板,比如RColorBrewer里的RdBu,然后手动调整一下颜色断点。别嫌麻烦,这一步能提升你图表的专业度至少两个档次。
再说说那个让人头疼的聚类树。很多时候,你的热图看起来就是一团乱麻,根本看不出什么规律。这时候,你要检查你的距离度量方法。默认是欧氏距离,但对于基因表达数据,有时候用Pearson相关系数做距离矩阵效果更好。我在做geo r语言做热图的时候,经常需要尝试不同的距离算法,看看哪种更能把相似样本聚在一起。这个过程很枯燥,但很有效。
还有,标签文字太小看不清?这是新手最常问的问题。解决办法很简单,在绘图函数里调整参数。比如设置fontsize_row和fontsize_col,或者干脆把标签旋转90度。别为了省空间就把标签挤成一条线,那样审稿人看着也费劲。
最后,保存格式。很多人喜欢直接截图,千万别这么干!分辨率太低,打印出来全是马赛克。用ggsave或者pdf()函数,直接输出矢量图或者高分辨率PNG。我一般默认输出300dpi的PNG,既清晰又方便插入Word。
做科研就是这样,没有捷径。那些看似大神随手画出的精美热图,背后都是无数次调试参数、排查错误的结果。别怕报错,报错信息其实是最好的老师。当你终于看到那张层次分明、色彩协调的热图时,那种成就感,真的比打游戏通关还爽。
记住,工具只是工具,关键是你懂不懂数据。别迷信那些现成的脚本,多看看文档,多试试参数。等你熟练了,你会发现,用geo r语言做热图其实挺简单的,甚至有点上瘾。
本文关键词:geo r语言做热图