本篇文章介绍基于R语言的热图(heatmap)可视化教程,该教程为个人笔记,不足之处欢迎大家批评指正!
pheatmap,全称Pretty Heatmaps,直译“完美的热图”,是一款非常优秀的热图绘制R包。在生信分析中,我们常常需要计算一个样本的几次实验结果或者不同样本实验结果的相关系数(样本间相关系数)以判断几个数据集之间相关的程度。
R语言的实现
#清除当前环境中的变量
rm(list=ls())
#安装pheatmap包
#install.packages("pheatmap")
#调用pheatmap包
library(pheatmap)
#随机生成数据
#(set.seed()括号里面的参数可以是任意数字,代表设置的第几号种子而已,不会参与运算,是个标记)
set.seed(1)
#随机生成30×20的矩阵
test = matrix(rnorm(600), 30, 20)
#定义列名为sp1-sp30
colnames(test) = paste("sp", 1:20, sep = "")
#定义行名为ge1-ge30
rownames(test) = paste("ge", 1:30, sep = "")
#查看数据前六行
head(test)
#pheatmap包pheatmap()函数的默认图
# 默认绘图
pheatmap(test)
##scale = "row"对行进行均一化,clustering_method设定不同聚类方法.
##默认为"complete",可以设定为'ward', 'ward.D', 'ward.D2', 'single',
##'complete', 'average', 'mcquitty', 'median' or 'centroid'
pheatmap(test,
scale = "row",
clustering_method = "average")
#参数设定行聚类距离方法为Pearson,默认为欧氏距离"euclidean"
pheatmap(test,
scale = "row",
clustering_distance_rows = "correlation")
#color参数自定义颜色(红白蓝)
pheatmap(test,
cluster_row = FALSE,
cluster_col = TRUE,
color = colorRampPalette(c("red","white","blue"))(100))
pheatmap(test,
treeheight_row = 20, #设置行聚类树的高度
treeheight_col = 30, #设置列聚类树的高度
color = colorRampPalette(c("red","white","blue"))(100))
cellheight = 10, #格子高度
fontsize = 10,#设置字体大小
main = "Example heatmap",#添加主标题
color = colorRampPalette(c("red","white","blue"))(100))
pheatmap(test,
display_numbers = TRUE, #设定在每个热图格子中显示相应的数值
number_format = "%.1e", #设定数值的显示格式
number_color = "blue", #设置热图格子中数值的颜色
color = colorRampPalette(c("red","white","blue"))(100))
pheatmap(test,
display_numbers = matrix(ifelse(test > 2, "*", "."), nrow(test)),#数值>2时显示星号, ≤2时显示·
color = colorRampPalette(c("red","white","blue"))(100)
常用参数介绍
基础设置
main 图的名字file 要保存图的名字color 表示颜色,赋值渐变颜色调色板colorRampPalette属性,选择“绿,黑,红”渐
变,分为100个等级,,例:color = colorRampPalette(c(“navy”, “white”, “firebrick3”))(100)
sclae 表示值均一化的方向,或者按照行或列,或者没有,值可以是"row", “column” 或者"none"
margins 表示页边空白的大小
fointsize 表示每一行的字体大小
聚类相关设置
cluster_cols 表示进行列的聚类,值可以是FALSE或TRUE
cluster_row 同上,是否进行行的聚类
treeheight_row 设置row方向的聚类树高
treeheight_col 设置col方向的聚类树高
clustering_distance_row 表示行距离度量的方法
clustering_distance_cols 同上,表示列距离度量的方法
clustering_method 表示聚类方法,值可以是hclust的任何一种,如"ward.D",“single”, “complete”(默认), “average”, “mcquitty”, “median”, “centroid”, “ward.D2”
legend设置
legend TRUE或者FALSE,表示是否显示图例
legend_breaks 设置图例的断点,格式:vector
legend_labels legend_breaks对应的标签 例:legend_breaks = -1:4, legend_labels = c(“0”,“1e-4”, “1e-3”, “1e-2”, “1e-1”, “1”)
单元格设置
border_color 表示热图上单元格边框的颜色,如果不绘制边框,则使用NA
cellheight 表示每个单元格的高度
cellwidth 表示每个单元格的宽度
单元格中的数值显示:
display_numbers 表示是否将数值显示在热图的格子中,如果这是一个矩阵(与原始矩阵具有相同的尺寸),则显示矩阵的内容而不是原始值。
fontsize 表示热图中字体显示的大小
number_format 设置显示数值的格式,较常用的有"%.2f"(保留小数点后两位),"%.1e"(科学计数法显示,保留小数点后一位)
number_color 设置显示内容的颜色
热图分割设置
cutree_rows 基于层次聚类(使用cutree)划分行的簇数(如果未聚集行,则忽略参数)
cutree_cols 基于层次聚类(使用cutree)划分列的簇数
annotation相关设置
annotation_row 行的分组信息,需要使用相应的行名称来匹配数据和注释中的行,注意之后颜色设置会考虑离散值还是连续值,格式要求为数据框
annotation_col 同上,列的分组信息
annotation_colors 用于手动指定annotation_row和annotation_col track颜色的列表。
annotation_names_row boolean值,显示是否应绘制行注释track的名称。
annotation_names_col 同上,显示是否应绘制列注释track的名称。
可以参考:https://www.datanovia.com/en/lessons/heatmap-in-r-static-and-interactive-visualization/
参考文献:https://www.jianshu.com/p/1c55ea64ff3fhttps://cloud.tencent.com/developer/article/1765623https://blog.csdn.net/lalaxumelala/article/details/86022722