安装

install.packages("gplots")library(gplots)

使用

1. 读取数据

# 毫无疑问,绘制热图需要一个数值矩阵作为输入# 我准备好了一个基因表达数据集,存放在名为data的文件中,该数据集含有11个样本,50个基因# 每列是一个样本,每行是一个基因# commanddata                              sep = "\t",                             header = T,row.names = 1,                             stringsAsFactors = F))

python绘制的heatmap怎么看相关性 heatmap图怎么分析_差异表达基因热图怎么看

数据集data的一部分

2. 最基本使用方法

# 有了数值矩阵就可以绘制热图了,# commandheatmap.2(data,trace="none")# 参数:  # 1. data: 刚才读入的数值矩阵  # 2. trace: 稍后再讲# 结果说明:  # 1. 上述命令可以说是使用heatmap.2最简单的方式  # 2. 在这种情况下,除 trace这个参数之外,其余的参数均使用默认值  # 3. 得到的结果如下所示  # 4. 在默认情况下,生成的热图有如下要点:    # a. 函数默认计算各行和各列数据之间的相关性,并根据它们的相似程度对行和列进行聚类,并且对行和列都绘制了系统发生树    # b. 左上角的标度中有一条线,这条线表示处于各个颜色区段内的值的个数    # c. 函数默认以输入矩阵的行名和列名为热图中行和列的lable,在这个例子中,行的lable数目不等于矩阵中的行数,是因为图比较小,不足以显示所有的lable,R自动选择显示了一部分    # d. 热图的配色使用默认配色

python绘制的heatmap怎么看相关性 heatmap图怎么分析_数据_02

3. 更多参数

# commandheatmap.2(data,trace="none",          Rowv = F)  # commandheatmap.2(data,trace="none",          Colv = F)# 新参数:  # 1. Rowv: 该参数接受一个逻辑值 TRUE(T)或FALSE(F),表示是否根据各行数据之间的相似程度对它们进行聚类 ,默认值为TRUE  # 2. Colv:与Rowv类似,表示是否根据各列数据之间相似程度对它们进行聚类,默认值为TRUE  # 结果说明:  # 1. 新结果如下方所示  # 2. 当Rowv被设置为FALSE时,可以看到函数不再根据各行数据之间的相似性对其聚类,自然也就不会绘制系统发生树  # 3. 当Colv被设置为FALSE时,不再对列进行聚类,也没有系统发生树的绘制

python绘制的heatmap怎么看相关性 heatmap图怎么分析_差异表达基因热图怎么看_03

将RowV设置为FALSE

python绘制的heatmap怎么看相关性 heatmap图怎么分析_差异表达基因热图怎么看_04

将ColV设置为FALSE

# commandheatmap.2(data,trace="none",          dendrogram = "row")# 新参数  # 1. dendrogram:该参数接受以下三个值中的一个:    # a. "row":表示只对行绘制系统发生树    # b. "column":表示只对列绘制系统发生树    # c. "both:表示对行和列都绘制系统发生树,这也是该参数的默认值  # 注意:    # 1. 该参数只是指定是否系统发生树,不会干扰对行和列进行聚类   # 2. 在参数Rowv和Colv为TRUE的情况下,函数仍然会进行行和列的聚类   # 结果说明:  # 1. 新结果如下方所示  # 2. 可以看到该参数并没有影响行和列的聚类

python绘制的heatmap怎么看相关性 heatmap图怎么分析_数据_05

dendrogram = "row"

python绘制的heatmap怎么看相关性 heatmap图怎么分析_默认值_06

dendrogram = "column"

# commandheatmap.2(data,trace="none",          dendrogram = "column",          scale = "row")# 新参数  # 1. scale:该参数接受以下三个值中的一个:    # a. "row":表示将每行数据进行转化,使每行数据的平均数为0,其实就将每行数据转为其 Z score    # b. "column": 表示将每列数据转换为对应的Z score    # c. "none":行和列的数据都不做转换,该值是该参数的默认值    # 结果说明:  # 1. 新结果如下所示  # 2. 与上边的图相比,对数据进行转换使得不同类别间的差别更明显,图片也更好看

python绘制的heatmap怎么看相关性 heatmap图怎么分析_聚类_07

# commandheatmap.2(data,trace="none",          dendrogram = "column",          scale = "row",          colsep = 4,          rowsep = 42,          sepcolor = "blue")          # 新参数  # 1. colsep:指定一个正整数n,然后函数将会在热图中的第n列与第n+1列中间留出一段间隔  # 2. rowsep:与colsep功能类似,指定一个正整数n,然后函数将会在热图中的第n行与第n+1行中间留出一段间隔  # 3. sepcolor:间隔的颜色,如果不指定该参数,则默认值为白色# 结果说明:  # 1. 新结果如下方所示  # 2. 可以看到,与上图相比,热图中多出了两个蓝色的间隔

python绘制的heatmap怎么看相关性 heatmap图怎么分析_默认值_08

# commandheatmap.2(data,trace="none",          dendrogram = "column",          scale = "row",          colsep = 4,          rowsep = 42,          cellnote = data,          notecex = 1.2,          notecol = "red")          # 新参数:  # 1. cellnote:指定一个矩阵,将该矩阵中的值添加到热图上的每个色块中,该矩阵应该与绘制热图的矩阵有相同的行数和列数  # 2. notecex:与cellnote对应,表示将填充到色块上的值放大到默认大小的多少倍,大于1表示放大,小于1表示缩小  # 3. notecol:填充到色块中的值的字体颜色  # 说明:  # 1. 将值添加到色块上适合色块比较少的热图,该例子中色块较多,添加了值之后一片模糊,因此在这里就不展示了
# commandheatmap.2(data,          dendrogram = "column",          scale = "row",          colsep = 4,          rowsep = 42,          trace = "column")          # 参数:  # 1. trace:该参数接受如下4个值中的一个    # a. "row":表示对每行数据绘制一条曲线,曲线高低起伏表示色块对应的值的大小    # b. "column":表示对每列数据绘制一条曲线,曲线高低起伏表示色块对应的值的大小,该值为该参数的默认值    # c. "both":表达对行和列都绘制曲线    # d. "none":表示对行和列都不绘制曲线    # 结果说明:  # 1. 新结果如下方所示  # 2. 一般热图不需要绘制该曲线,该曲线让热图看起来杂乱  # 3. 因为该参数的默认值为 column,因此在之前的例子中,该参数被专门设置为none

python绘制的heatmap怎么看相关性 heatmap图怎么分析_差异表达基因热图怎么看_09

# commandheatmap.2(data,trace = "none",          dendrogram = "column",          scale = "row",          colsep = 4,          rowsep = 42,          cexRow = 1.5,          cexCol = 1.5)          # 新参数:  # 1. cexRow:表示将行的lable变为默认值的多少倍,大于1表示放大,小于1表示缩小  # 2. cexCol:与cexRow类似# 结果说明:  # 1.可以看到行和列的lable都比之前大了一些

python绘制的heatmap怎么看相关性 heatmap图怎么分析_聚类_10

# commandheatmap.2(data,trace = "none",          dendrogram = "column",          scale = "row",          colsep = 4,          rowsep = 42,          labRow = 1:50,          labCol = 1:11,          colRow = c("red","red"),          colCol = c("blue","blue"))          # 新参数  # 1. labRow:指定一个向量作为行的lable,指定为NA则不显示lable  # 2. labCol:指定一个向量作为列的lable,指定为NA则不显示lable  # 3. colRow:指定行lable的颜色  # 4. colCol:指定列lable的颜色  # 注意:  # 1. colRow 和 colCol的值不会循环补齐,也就说,指定几个颜色,就给几个lable着色,其它lable仍然使用默认的黑色  # 结果说明:  # 1. 新结果如下方所示  # 2. 可以看到,我们分别只指定了两个行和列lable的颜色,因此也就分别只有两个lable被着色

python绘制的heatmap怎么看相关性 heatmap图怎么分析_聚类_11

# commandheatmap.2(data,trace = "none",          dendrogram = "column",          scale = "row",          colsep = 4,          rowsep = 42,          key = TRUE,          density.info = "none",          key.title = "GENE",          key.xlab = "Z Score",          key.ylab = NA)# 新参数:  # 1. key:接受一个逻辑值TRUE或FALSE,表示是否绘制左上角的颜色标度条,默认为TRUE  # 2. density.info:接受一下3个值中的一个:    # a. "none":表示在颜色标度条中不绘制密度曲线或直方图    # b. "histogram":表示在颜色标度中绘制直方图    # c. "density",表示在颜色标度中绘制密度曲线  # 3. key.title:标度条的名称,绘制在标度条的上方  # 4. key.xlab:标度条的 x 轴的名称,绘制在标度条的下方,设置为NA则不显示  # 5. key.ylab:标度条的 y 轴的名称,绘制在标度条的左侧,设置为NA则不显示  # 结果说明:  # 1. density.info 被设为"none",因此没有了标度条中的线条  # 2. 标度条的 x,y轴名称也发生了相应的变化

python绘制的heatmap怎么看相关性 heatmap图怎么分析_数据_12

# commandlibrary(RColorBrewer)mypalette "PiYG")morecols heatmap.2(data,          dendrogram = "column",          scale="row",          col=rev(morecols(150)),          trace="none",          colsep = 4,          rowsep = 42,          labRow = NA,          density.info = "none",          key.title = NA,          key.xlab = "Z Score",          key.ylab = NA)          # 新参数  # 1. col:指定用来绘制热图的颜色# 说明:  # 1. 这里产生用来绘制热图的渐变色用到了一个RColorBrewer包和colorRampPalette函数,这里不细讲,感兴趣的可以自己学习  # 2. 新结果如下方所示  # 3. 最后用AI稍微修一修,比如调整一下标度条的位置,就可以了

python绘制的heatmap怎么看相关性 heatmap图怎么分析_数据_13