热图可以反应各个样本的基因分布情况,把数字转换成图片更直观一些,目前画热图的软件不少,比如graphpad
,华科也出了一款软件,甚至excel
都可以,还有很多在线热图工具,但个人感觉还是R的pheatmap
包最好看。
library(pheatmap) #加载包
setwd("x:/xxx") #设置工作目录
热图需要准备的数据
- 格式:txt或者csv的表格文件,以下制表符的
txt
为例 - 内容:行为基因表达量(数字),列为样本名称
矩阵格式如下:
gene | test1 | test2 | test3 |
---|---|---|---|
A | 80 | 90 | 90 |
B | 70 | 100 | 90 |
C | 66 | 90 | 90 |
D | 55 | 88 | 90 |
… | … | … | … |
分组文件 (需要时备用,可以行分组,也可以列分组)
test | group | score |
---|---|---|
test1 | group1 | 90 |
test2 | group2 | 100 |
test3 | group1 | 90 |
… | … | … |
加载数据
heat <- read.table("Desktop/heat.txt",header = T, row.names = 1, sep="\t")
#加载表头,第一列固定
作图
pheatmap(heat) #默认作图,无均一化
pheatmap(heat,scale="row")
#scale="row"表示按行均一化
按行均一化,可可以列均一化,默认是无,"row","column" or "none"默认是"none**"
均一化目的:有时候表达量差别太大,会出现差别大情况,需要进行一致化缩小差距
pheatmap(heat,scale="row", #行均一化
cluster_cols=F,cluster_rows=F, #不按行聚类,不按列聚类,就是不显示树枝,F也可以为FALSE
show_rownames = F,show_colnames=F#不显示行名,不显示列名)
pheatmap(heat,scale="row",cluster_cols=F,cluster_rows=F,
show_rownames = F,show_colnames=F,
color = colorRampPalette(c("green","white","red"),bias=2.5)(256))
#更改配色,颜色自己定义
常见参数设置
clustering_distance_rows = "correlation",#聚类线长度优化
treeheight_row=40,#按行聚类树高
treeheight_col=40,#按列聚类树高
cluster_cols=FALSE,#是否按列聚类
cluster_rows=F,#是否按行聚类
display_numbers=F,#是否在每一格上显示数据
number_format="%.2f",#显示数据的格式,几位小数,或"\%.1e",颜色number_color,大小fontsize_number
fontsize_row=10,#行名称字体大小
fontsize_col=15,#列名称字体大小
#格子大小
cellwidth = 50,
cellheight= 14,
main="ABC",#标题名称
gaps_row = c(10, 15),#插入缝隙,不能聚类!
cutree_row = 7,#按聚类分割
show_colnames=TRUE,#是否显示列名,同理show_rownames
#定义颜色"navy", "white", "firebrick3"
- color = colorRampPalette(c("blue","white","red"),bias=2.5)(256),
- color = colorRampPalette(c("MediumBlue","white","red"))(256),
- #border_color = "black",
#格子框颜色
legend = FALSE,#是否显示图例
legend_breaks = -1:4,#图例范围
filename = "test.pdf",#保存文件命名