美文网首页单细胞转录组
2021-01-05ComplexHeatmap热图R包参数解读

2021-01-05ComplexHeatmap热图R包参数解读

作者: 阿乜太帅 | 来源:发表于2021-01-05 14:28 被阅读0次

    之前画热图一直在用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

    相关文章

      网友评论

        本文标题:2021-01-05ComplexHeatmap热图R包参数解读

        本文链接:https://www.haomeiwen.com/subject/ejzioktx.html