热图pheatmap()函数
- 2019 年 11 月 1 日
- 笔记
先看一眼这个函数的参数,这么多! 而且最后还有省略号!

那么我们应该怎么合理使用这些参数让你的热图看起来更加高大上呢?
数据准备:
此次例子,我们选择了一套GEO数据库的肺癌数据,数据编号为GSE19804,120个样本,其中包含60个癌症样本和60个癌旁正常样本,前面我们使用t检验,并对p值进行BH校正,筛选fdr小于0.01的基因中前40个在癌症相对于正常样本中显著差异表达的基因进行热图绘制。
数据格式如下:

默认参数画图:
#绘图 pheatmap(heatmap_data)

是不是很不好看?基因名和样本名乱成一堆,也看不出来那些样本聚类到了一起…
参数调整:
#颜色参数:
color |
表示颜色,用来画热图的颜色,可以自己定义,默认值为colorRampPalette(rev(brewer.pal(n = 7, name =”RdYlBu”)))(100),RdYlBu也就是Rd红色,Yi黄色,Bu蓝色的过度,则主调色为红黄蓝。 |
---|
#数据变换参数:
scale |
是指对数值进行均一化处理,在基因表达量的数据中,有些基因表达量极低,有些基因表达量极高,因此把每个基因在不同处理和重复中的数据转换为平均值为0,方差为1的数据,可以看出每个基因在某个处理和重复中表达量是高还是低,一般选择做row均一化。 |
---|---|
clustering_method |
表示聚类方法,值可以是hclust的任何一种,如”ward.D”,”single”, “complete”, “average”, “mcquitty”, “median”, “centroid”, “ward.D2″。 |
cluster_rows |
表示行是否聚类,值可以是FALSE或TRUE |
clustering_distance_rows |
行距离度量的方法,如欧氏距离 |
cutree_rows |
行聚类数 |
treeheight_row |
行聚类树的高度,默认为50 |
gaps_row |
对行进行分割,就不应对相应的行进行聚类 |
cluster_cols |
表示列是否聚类,值可以是FALSE或TRUE |
clustering_distance_cols |
列距离度量的方法 |
cutree_cols |
列聚类数 |
treeheight_col |
列聚类树的高度,默认为50 |
gaps_col |
对列进行分割,就不应对相应的列进行聚类 |
#色度条参数
就是热图右上角那个小小的长方条
legend |
逻辑值,是否显示色度条,默认为T |
---|---|
legend_breaks |
显示多少个颜色数值段 |
legend_labels |
对色度条上对应位置的字符进行修改 |
#注释条
annotation_colors |
对标签的颜色进行修改 |
---|---|
annotation_legend |
是否显示标签注释条 |
annotation_row |
数据框格式,用来定义热图所在行的注释条 |
annotation_names_row |
逻辑值,是否显示行标签名称 |
annotation_col |
数据框格式,用来定义热图所在列的注释条 |
annotation_names_col |
逻辑值,是否显示列标签名称 |
#其他修改参数
main |
设置图的标题 |
---|---|
fontsize |
是设置所有除主图以外的标签的大小 |
number_color |
字体的颜色 |
show_rownames |
是否显示行名 |
fontsize_row |
行名的字体大小 |
labels_row |
X轴坐标名设置 |
show_colnames |
是否显示列名 |
fontsize_col |
列名的字体大小 |
labels_col |
y轴坐标名设置 |
经过小编一系列参数更改,修改如下:
#加载包
library(pheatmap) library(RColorBrewer)
#设置颜色
color.1 <- colorRampPalette(rev(c(“#ff0000”, “#000000”, “#00ff00”)))(100)
#注释条
#设置列的注释条
anno_col=data.frame(sampleType=factor(rep(c(“tumor”,”normal”),each=60)))
#与数据样本名对应 row.names(anno_col)=colnames(heatmap_data)#设置列的注释条的颜色 ann_color=list(sampleType=c(tumor=’#cd0000′,normal=’#3a5fcd’))
#绘图
pheatmap(heatmap_data,scale=”none”,color=color,annotation_col=anno_col,annotation_colors=ann_color,fontsize=8,show_colnames=F,main=”GSE19804:tumor vs normal heatmap”,legend_breaks=c(4,12),legend_labels=c(‘low’,’high’))
是不是已经比一开始使用默认参数好看多了呢?如下:

当然还有一些其他的用到不多的参数
留给读者自己去实验一下吧…
#小格子参数设置
热图是由一个个的小四方格子组成的,每一个小格子代表一个基因在一个样本内的表达情况
fontsize_number |
小格子中数字大小 |
---|---|
display_numbers |
逻辑值,是否在小格子中显示数字 |
number_format |
小格子中数字显示形式,但仅有在display_numbers=T时才能使用 |
na_col |
设置小格子为缺失值时的颜色 |
cellwidth |
表示每个小格子的宽度 |
cellheight |
表示每个小格子的高度 |
#输出文件参数设置
一般可以直接将画好的热图以png格式或者pdf格式进行写出
filename |
输出图画的文件名 |
---|---|
width |
输出图画的宽度 |
height |
输出图画的高度 |
我们下期绘图再见~