HEAT MAP图相关

By | 2015 年 5 月 13 日

by:李森

Heatmap称之为热图,是一类在各种文章中很常见的图表类型。
下图就是典型一张heatmap图,一组基因在不同时期不同处理下的上调下调的情况用红色以及绿色表示出来,红绿颜色的加深代表变化程度。

这类图多用在需要表现数据的变化情况(例如基因的上调下调、基因互作程度
等)的地方。
现在能做heatmap的软件已经有很多,除了常用的R,mathlab之外还有如SPSS,heatmap bulider等。
我在作图的时候使用的是R语言的heatmap()命令生成样图
然后用Adobe Illustrator CS6进行修饰
关于R语言,由于其能实现的功能太多,这里只用一个例子解释一下如何制作heatmap,
代码可以套用

准备工作:

R包(windows需要安装两个,R包和Rtools包) http://www.r-project.org/
Adobe Illustrator CS6 互联网资源很多,这里提供一个http://www.playnext.cn/illustrator-cs6.html
Excel等表格处理软件
需要绘制的数据表,例如我使用的是手头上的一组斑马鱼SiRNA表达情况的数据
 

step 1:

使用R绘制Heatmap所需要的格式为下图所示:

Name 这一列就是每一行数据的标签,Repeat则是对应不同类别。
根据这一点,先将数据整理为对应的格式,
我保留了原始数据中的Gene Name(F列)以及相关上下调的normalized数据(N和O列),其它的全部去除
最后整理结果如下,保存为 .csv格式
(之所以保存为 .csv格式是由于.csv格式比较简单,数据与数据之间用【,】隔开,方便处理)

Step1.2

但是这里需要注意的一点是,作为每一行标签的Name不能有重复,否则在R处理的时候会报错
剔除重复值的方法就是选中Name列,用Excel的【条件格式】

将重复的值挑选出来后,重复的单元格颜色会改变

再用【筛选】功能

点击Name右下角的小箭头 -【按颜色筛选】-选择颜色

这样就能将所有重复数据选出来,进行删除或者重命名Name

剔除所有重复的值之后就保存为

Step2 绘制草

首先【文件】-【改变工作目录】-选中result_step1.2.csv所在的工作目录

result<- read.csv("result_step1.2.csv", sep=",")
row.names(result) <- result$Name
result <- result[,2:3] # or result <- result[,-1]
result_matrix <- data.matrix(result)
heatmap(result_matrix, col=rainbow(256,start=0,end=2/6), revC=FALSE, scale="column", margins=c(5,15))

 

最后【文件】-【另存为】-【PDF】
保存为矢量格式

Step3 后期修饰

由R直接生成的图很简陋,不够精致,往往需要后期进行一些修饰
而对矢量图片进行修饰则需要使用Adobe公司的Adobe Illustrator软件

若想熟练使用这个软件,可以先学习其一些工具的基本操作,网络上教程很多,这里不再一一赘述
推荐可先将 http://www.51zxw.net/list.aspx?cid=303 的第一章第二章先了解一下。

在 Illustrator中打开生成的result.pdf之后,会发现这张图有以下几个问题

1.右侧的Gene Name重叠在一块了
2.Repeat1以及Repeat2字体太大,并且是竖版排列
3.比例不协调
问题逐一解决

Step3.1

文字重叠处理

使用左侧的直接选择工具,选中后安退格键,先将上下两部分删除,文字之后再添加

然后用选择工具框选住文字部分(注意,和上面的直接选择工具不同)

这样文字就被框选出来
在Illustrator上方状态中的字符栏更改字体大小到字体不再重叠
我这里从7修改成2.2

文字整体有点位移,用选择工具拖动调整一下,
使其逐行对齐。

Step3.2

添加文字性内容,将Repeat1以及Repeat2添加回来,或者添加其它修饰性文字/线条
使用文字工具
在画板空白处点击后添加文字,并将字体大小改为合适样式

使用选择工具将其拖动到合适位置

Step3.3

更改整体比例,让图片协调