之前画热图一直在用pheatmap,简单美观,但是后面有了些特殊需求之后,人就不知足了,所以转到了功能更全面但是相对更难入手的 ComplexHeatmap
核心函数为Heatmap,大体的参数解读如下:
Heatmap(matrix, col, name,
#matrix:数字或字符型矩阵(可以是离散或连续型数值)
#col:定义热图颜色,对离散型数据,col可以是一个向量;对连续型数据,col可以是一个函数,也可以用colorRamp2 函数生成
#name:热图图例名称
na_col = “grey”,
#ComplexHeatmap允许数据中含有NA,需要通过参数na_col来控制NA的颜色
color_space = “LAB”,
#当矩阵是数值型矩阵,col是一个向量时,控制内插颜色
rect_gp = gpar(col = NA),
#rect_gp:热图体区矩形的参数,如设置举行边框为白色
cell_fun = NULL,
#cell_fun:自定义在cell中增加绘图项的函数。7个参数:i(row index,矩阵中的行index), j(column index,矩阵中的列index), x,y(热图体区中中间点的坐标),width,height(cell的宽度和高度),fill(cell的填充颜色)
row_title = character(0),
#row_title:行标题
row_title_side = c(“left”, “right”),
#row_title_side:行标题位置,左(“left”),右(“right”)
row_title_gp = gpar(fontsize = 14),
#row_title_gp:设置行标题的文本属性,此处为字体大小为14
row_title_rot = switch(row_title_side[1], “left” = 90, “right” = 270),
#row_title_rot:行标题的旋转角度,可选为0,90,270
column_title = character(0),
#column_title:列标题
column_title_side = c(“top”, “bottom”),
#column_title_side:列标题位置,上(“top”),下(“bottom”)
column_title_gp = gpar(fontsize = 14),
#column_title_gp:设置列标题的文本属性
column_title_rot = 0,
#column_title_rot:列标题的旋转角度,可选为0,90,270
cluster_rows = TRUE,
#cluster_rows:是否行聚类
clustering_distance_rows = “euclidean”,
#clustering_distance_rows:行聚类的距离方法,默认为“euclidean”,也可以为自定义函数
clustering_method_rows = “complete”,、
#clustering_method_rows:行聚类的方法,默认为“complete”,可参考hclust
row_dend_side = c(“left”, “right”),
#row_dend_side:行聚类树位置,左(“left”),右(“right”)
row_dend_width = unit(10, “mm”),
#row_dend_width:行聚类树的宽度,unit对象
show_row_dend = TRUE,
#show_row_dend:是否展示行聚类树
row_dend_reorder = TRUE,
#row_dend_reorder:对行重新排序,该值可以是逻辑值或包含用于重新排序行的权重的向量
row_dend_gp = gpar(),
#row_dend_gp:绘图线的图形参数。如果已经提供了带有边渲染的树形图对象,则该参数将被忽略。
row_hclust_side = row_dend_side,
#row_hclust_side:已弃用
row_hclust_width = row_dend_width,
#row_hclust_width:已弃用
show_row_hclust = show_row_dend,
#show_row_hclust:已弃用
row_hclust_reorder = row_dend_reorder,
#row_hclust_reorder:已弃用
row_hclust_gp = row_dend_gp,
#row_hclust_gp:已弃用
cluster_columns = TRUE,
#cluster_columns:是否列聚类
clustering_distance_columns = “euclidean”,
#clustering_distance_columns:列聚类的距离方法,也可以为自定义函数
clustering_method_columns = “complete”,
#clustering_method_columns:列聚类方法,可参考hclust
column_dend_side = c(“top”, “bottom”),
#column_dend_side:列聚类树位置,上(“top”),下(“bottom”)
column_dend_height = unit(10, “mm”),
#column_dend_height:行聚类树的高度,unit对象
show_column_dend = TRUE,
#show_column_dend:是否展示列聚类树
column_dend_gp = gpar(),
#column_dend_gp:绘图线的图形参数。如果已经提供了带有边渲染的树形图对象,则该参数将被忽略。
column_dend_reorder = TRUE,
#column_dend_reorder:对列重新排序,该值可以是逻辑值或包含用于重新排序列的权重的向量
column_hclust_side = column_dend_side,
#column_hclust_side:已弃用
column_hclust_height = column_dend_height,
#column_hclust_height:已弃用
show_column_hclust = show_column_dend,
#show_column_hclust:已弃用
column_hclust_gp = column_dend_gp,
#column_hclust_gp:已弃用
column_hclust_reorder = column_dend_reorder,
#column_hclust_reorder:已弃用
row_order = NULL,
#row_order:行的顺序。如果选择此热图作为主热图,则可以轻松调整热图列表的行顺序。手动设置行顺序应关闭群集
column_order = NULL,
#column_order:列的顺序。它可以轻松调整矩阵和列注释的列顺序
row_names_side = c(“right”, “left”),
#row_names_side:行名称位置。
show_row_names = TRUE,
#show_row_names:是否展示行名称
row_names_max_width = default_row_names_max_width(),
#row_names_max_width:行名称的最大宽度。因为某些时候行名称可能很长,所以显示它们都是不合理的。
row_names_gp = gpar(fontsize = 12),
#row_names_gp:行名称文本属性
column_names_side = c(“bottom”, “top”),
#column_names_side:列名称位置
show_column_names = TRUE,
#show_column_names:是否展示列名称
column_names_max_height = default_column_names_max_height(),
#column_names_max_height:行名称的最大宽度。
column_names_gp = gpar(fontsize = 12),
#column_names_gp:列名称文本属性
top_annotation = new(“HeatmapAnnotation”),
#top_annotation:用HeatmapAnnotation函数构建的注释对象,在顶部添加注释信息
top_annotation_height = top_annotation@size,
#top_annotation_height:顶部注释信息展示的总高度
bottom_annotation = new(“HeatmapAnnotation”),
#bottom_annotation:用HeatmapAnnotation函数构建的底部注释对象
bottom_annotation_height = bottom_annotation@size,
#bottom_annotation_height:底部注释信息展示的总高度
km = 1,
#km:对行做k-means聚类的类数,若k>1,热图会根据k-means聚类对行进行分裂,对每个cluster,进行层次聚类
km_title = “cluster%i”,
#km_title:设置km时每个cluster的行标题。它必须是格式为“。*%i。*”的文本,其中“%i”由cluster的索引替换
split = NULL,
#split:行按照split定义的向量或者数据框进行分裂。但是,如果cluster_rows是聚类对象,则split可以是单个数字,表示将根据树上的拆分来拆分行
gap = unit(1, “mm”),
#gap:如果热图按行分割,则行切片之间的间隙应为单位对象。如果是矢量,则热图中的顺序对应于从上到下
combined_name_fun = function(x) paste(x, collapse = “/”),
#combined_name_fun:如果热图按行分割,如何为每个切片创建组合行标题? 此函数的输入参数是一个向量,它包含split中每列下的级别名称。
width = NULL,
#width:单个热图的宽度应该是固定的单位对象。 当热图附加到热图列表时,它用于布局。
show_heatmap_legend = TRUE,
#show_heatmap_legend:是否展示图例
heatmap_legend_param = list(title = name),
#heatmap_legend_param:热图图例设置(标题,位置,方向,高度等)参数列表,详情可见color_mapping_legend,ColorMapping-method。例如:heatmap_legend_param = list(title= “legend”, title_position =”topcenter”,
legend_height=unit(8,”cm”),legend_direction=”vertical”)
use_raster = FALSE,
#use_raster:是否将热图图像体渲染为光栅图像。当矩阵很大时,它有助于减小文件大小。如果设置了cell_fun,则强制use_raster为FALSE
raster_device = c(“png”, “jpeg”, “tiff”, “CairoPNG”, “CairoJPEG”, “CairoTIFF”),
#raster_device:用于生成光栅图像的图形设备
raster_quality = 2,
#raster_quality:设置为大于1的值将改善光栅图像的质量。
raster_device_param = list()
#raster_device_param:所选图形设备的其他参数列表。
)
同时附上pheatmap包中pheatmap函数的参数解读
pheatmap(mat, color = colorRampPalette(rev(brewer.pal(n = 7, name =
"RdYlBu")))(100), kmeans_k = NA, breaks = NA, border_color = "grey60",
cellwidth = NA, cellheight = NA, scale = "none", cluster_rows = TRUE,
cluster_cols = TRUE, clustering_distance_rows = "euclidean",
clustering_distance_cols = "euclidean", clustering_method = "complete",
clustering_callback = identity2, cutree_rows = NA, cutree_cols = NA,
treeheight_row = ifelse((class(cluster_rows) == "hclust") || cluster_rows,
50, 0), treeheight_col = ifelse((class(cluster_cols) == "hclust") ||
cluster_cols, 50, 0), legend = TRUE, legend_breaks = NA,
legend_labels = NA, annotation_row = NA, annotation_col = NA,
annotation = NA, annotation_colors = NA, annotation_legend = TRUE,
annotation_names_row = TRUE, annotation_names_col = TRUE,
drop_levels = TRUE, show_rownames = T, show_colnames = T, main = NA,
fontsize = 10, fontsize_row = fontsize, fontsize_col = fontsize,
angle_col = c("270", "0", "45", "90", "315"), display_numbers = F,
number_format = "%.2f", number_color = "grey30", fontsize_number = 0.8
* fontsize, gaps_row = NULL, gaps_col = NULL, labels_row = NULL,
labels_col = NULL, filename = NA, width = NA, height = NA,
silent = FALSE, na_col = "#DDDDDD", ...)
#解读
mat # 需要绘制热图的数字矩阵。
color # 表示颜色,赋值渐变颜色调色板colorRampPalette属性,选择"蓝,白,红"渐变,分为100个等级
# 例 color = colorRampPalette(c("navy", "white", "red"))(100)
kmeans_k # 绘制热图的行聚类数,如果是NA,那么行不会聚类。
breaks # 设置mat数值范围的数字序列
border_color # 表示热图上单元格边框的颜色,如果不绘制边框,则使用NA
cellwidth # 表示每个单元格的宽度,若选择NA则表示适应窗口
cellheight # 表示每个单元格的高度,若选择NA则表示适应窗口
scale # 表示值均一化的方向,或者按照行或列,或者没有,值可以是"row", “column” 或者"none"
cluster_rows # 表示进行行的聚类,值可以是FALSE或TRUE
cluster_cols # 表示进行列的聚类,值可以是FALSE或TRUE
clustering_distance_rows # 表示行距离度量的方法
clustering_distance_cols # 表示列距离度量的方法
clustering_method # 表示聚类方法,值可以是hclust的任何一种,
# 如"ward.D",“single”, “complete”, “average”, “mcquitty”, “median”, “centroid”, “ward.D2”
clustering_callback # 回调函数来修改聚类
cutree_rows # 基于层次聚类(使用cutree)划分行的簇数(如果未聚集行,则忽略参数)
cutree_cols # 基于层次聚类(使用cutree)划分列的簇数(如果未聚集行,则忽略参数)
treeheight_row # 行的树的高度,
treeheight_col # 列的树的高度
legend # TRUE或者FALSE,表示是否显示图例
legend_breaks # 设置图例的断点,如legend_breaks = -1:4
legend_labels # legend_breaks对应的标签例:legend_breaks = -1:4, legend_labels = c(“0”,“1e-4”, “1e-3”, “1e-2”, “1e-1”, “1”)
annotation_row # 行的分组信息,需要使用相应的行名称来匹配数据和注释中的行,注意之后颜色设置会考虑离散值还是连续值,格式要求为数据框
annotation_col # 列的分组信息,需要使用相应的列名称来匹配数据和注释中的列,格式要求为数据框
annotation_colors # 用于手动指定annotation_row和annotation_col track颜色的列表。
annotation_legend # 是否显示图例的名称。
annotation_names_row # 是否显示行注释的名称。
annotation_names_col # 是否显示列注释的名称。
show_rownames # 是否显示行名
show_colnames # 是否显示列名
main # 图的名字
fontsize # 图的字体大小
fontsize_row # 行名的字体大小,默认与图的字体大小相同
fontsize_col # 列名的字体大小,默认与图的字体大小相同
angle_col # 列标签的角度,可选择 (0, 45, 90, 270 and 315)
display_numbers # 表示是否将数值显示在热图的格子中,如果这是一个矩阵(与原始矩阵具有相同的尺寸),则显示矩阵的内容而不是原始值。
number_format # 设置显示数值的格式,较常用的有"%.2f"(保留小数点后两位),"%.1e"(科学计数法显示,保留小数点后一位)
number_color # 设置显示内容的颜色
fontsize_number # 设置显示内容的字体大小
labels_row # 代替行名的自定义标签
labels_col # 代替列名的自定义标签
filename # 图片保存位置以及文件名
width # 手动设置输出文件的宽度(单位:英寸)
height # 手动设置输出文件的高度(单位:英寸)
silent # 不绘制热图
na_col # 缺失值的颜色
reference: Zuguang Gu, Roland Eils and Matthias Schlesner, Complex heatmaps reveal patterns and correlations in multidimensional genomic data, Bioinformatics, 2016
网友评论