2021-01-05ComplexHeatmap熱圖R包參數(shù)解讀

之前畫(huà)熱圖一直在用pheatmap,簡(jiǎn)單美觀,但是后面有了些特殊需求之后,人就不知足了,所以轉(zhuǎn)到了功能更全面但是相對(duì)更難入手的 ComplexHeatmap

核心函數(shù)為Heatmap,大體的參數(shù)解讀如下:

Heatmap(matrix, col, name, 
#matrix:數(shù)字或字符型矩陣(可以是離散或連續(xù)型數(shù)值)
#col:定義熱圖顏色,對(duì)離散型數(shù)據(jù),col可以是一個(gè)向量;對(duì)連續(xù)型數(shù)據(jù),col可以是一個(gè)函數(shù),也可以用colorRamp2 函數(shù)生成
#name:熱圖圖例名稱
na_col = “grey”,
#ComplexHeatmap允許數(shù)據(jù)中含有NA,需要通過(guò)參數(shù)na_col來(lái)控制NA的顏色
color_space = “LAB”,
#當(dāng)矩陣是數(shù)值型矩陣,col是一個(gè)向量時(shí),控制內(nèi)插顏色
rect_gp = gpar(col = NA),
#rect_gp:熱圖體區(qū)矩形的參數(shù),如設(shè)置舉行邊框?yàn)榘咨?cell_fun = NULL,
#cell_fun:自定義在cell中增加繪圖項(xiàng)的函數(shù)。7個(gè)參數(shù):i(row index,矩陣中的行index), j(column index,矩陣中的列index), x,y(熱圖體區(qū)中中間點(diǎn)的坐標(biāo)),width,height(cell的寬度和高度),fill(cell的填充顏色)
row_title = character(0),
#row_title:行標(biāo)題
row_title_side = c(“l(fā)eft”, “right”),
#row_title_side:行標(biāo)題位置,左(“l(fā)eft”),右(“right”)
row_title_gp = gpar(fontsize = 14),
#row_title_gp:設(shè)置行標(biāo)題的文本屬性,此處為字體大小為14
row_title_rot = switch(row_title_side[1], “l(fā)eft” = 90, “right” = 270),
#row_title_rot:行標(biāo)題的旋轉(zhuǎn)角度,可選為0,90,270
column_title = character(0),
#column_title:列標(biāo)題
column_title_side = c(“top”, “bottom”),
#column_title_side:列標(biāo)題位置,上(“top”),下(“bottom”)
column_title_gp = gpar(fontsize = 14),
#column_title_gp:設(shè)置列標(biāo)題的文本屬性
column_title_rot = 0,
#column_title_rot:列標(biāo)題的旋轉(zhuǎn)角度,可選為0,90,270
cluster_rows = TRUE,
#cluster_rows:是否行聚類
clustering_distance_rows = “euclidean”,
#clustering_distance_rows:行聚類的距離方法,默認(rèn)為“euclidean”,也可以為自定義函數(shù)
clustering_method_rows = “complete”,、
#clustering_method_rows:行聚類的方法,默認(rèn)為“complete”,可參考hclust
row_dend_side = c(“l(fā)eft”, “right”),
#row_dend_side:行聚類樹(shù)位置,左(“l(fā)eft”),右(“right”)
row_dend_width = unit(10, “mm”),
#row_dend_width:行聚類樹(shù)的寬度,unit對(duì)象
show_row_dend = TRUE,
#show_row_dend:是否展示行聚類樹(shù)
row_dend_reorder = TRUE,
#row_dend_reorder:對(duì)行重新排序,該值可以是邏輯值或包含用于重新排序行的權(quán)重的向量
row_dend_gp = gpar(),
#row_dend_gp:繪圖線的圖形參數(shù)。如果已經(jīng)提供了帶有邊渲染的樹(shù)形圖對(duì)象,則該參數(shù)將被忽略。
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:列聚類的距離方法,也可以為自定義函數(shù)
clustering_method_columns = “complete”,
#clustering_method_columns:列聚類方法,可參考hclust
column_dend_side = c(“top”, “bottom”),
#column_dend_side:列聚類樹(shù)位置,上(“top”),下(“bottom”)
column_dend_height = unit(10, “mm”),
#column_dend_height:行聚類樹(shù)的高度,unit對(duì)象
show_column_dend = TRUE,
#show_column_dend:是否展示列聚類樹(shù)
column_dend_gp = gpar(),
#column_dend_gp:繪圖線的圖形參數(shù)。如果已經(jīng)提供了帶有邊渲染的樹(shù)形圖對(duì)象,則該參數(shù)將被忽略。
column_dend_reorder = TRUE,
#column_dend_reorder:對(duì)列重新排序,該值可以是邏輯值或包含用于重新排序列的權(quán)重的向量
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:行的順序。如果選擇此熱圖作為主熱圖,則可以輕松調(diào)整熱圖列表的行順序。手動(dòng)設(shè)置行順序應(yīng)關(guān)閉群集
column_order = NULL,
#column_order:列的順序。它可以輕松調(diào)整矩陣和列注釋的列順序
row_names_side = c(“right”, “l(fā)eft”),
#row_names_side:行名稱位置。
show_row_names = TRUE,
#show_row_names:是否展示行名稱
row_names_max_width = default_row_names_max_width(),
#row_names_max_width:行名稱的最大寬度。因?yàn)槟承r(shí)候行名稱可能很長(zhǎng),所以顯示它們都是不合理的。
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函數(shù)構(gòu)建的注釋對(duì)象,在頂部添加注釋信息
top_annotation_height = top_annotation@size,
#top_annotation_height:頂部注釋信息展示的總高度
bottom_annotation = new(“HeatmapAnnotation”),
#bottom_annotation:用HeatmapAnnotation函數(shù)構(gòu)建的底部注釋對(duì)象
bottom_annotation_height = bottom_annotation@size,
#bottom_annotation_height:底部注釋信息展示的總高度
km = 1,
#km:對(duì)行做k-means聚類的類數(shù),若k>1,熱圖會(huì)根據(jù)k-means聚類對(duì)行進(jìn)行分裂,對(duì)每個(gè)cluster,進(jìn)行層次聚類
km_title = “cluster%i”,
#km_title:設(shè)置km時(shí)每個(gè)cluster的行標(biāo)題。它必須是格式為“。*%i。*”的文本,其中“%i”由cluster的索引替換
split = NULL,
#split:行按照split定義的向量或者數(shù)據(jù)框進(jìn)行分裂。但是,如果cluster_rows是聚類對(duì)象,則split可以是單個(gè)數(shù)字,表示將根據(jù)樹(shù)上的拆分來(lái)拆分行
gap = unit(1, “mm”),
#gap:如果熱圖按行分割,則行切片之間的間隙應(yīng)為單位對(duì)象。如果是矢量,則熱圖中的順序?qū)?yīng)于從上到下
combined_name_fun = function(x) paste(x, collapse = “/”),
#combined_name_fun:如果熱圖按行分割,如何為每個(gè)切片創(chuàng)建組合行標(biāo)題? 此函數(shù)的輸入?yún)?shù)是一個(gè)向量,它包含split中每列下的級(jí)別名稱。
width = NULL,
#width:單個(gè)熱圖的寬度應(yīng)該是固定的單位對(duì)象。 當(dāng)熱圖附加到熱圖列表時(shí),它用于布局。
show_heatmap_legend = TRUE,
#show_heatmap_legend:是否展示圖例
heatmap_legend_param = list(title = name),
#heatmap_legend_param:熱圖圖例設(shè)置(標(biāo)題,位置,方向,高度等)參數(shù)列表,詳情可見(jiàn)color_mapping_legend,ColorMapping-method。例如:heatmap_legend_param = list(title= “l(fā)egend”, title_position =”topcenter”,
legend_height=unit(8,”cm”),legend_direction=”vertical”)
use_raster = FALSE,
#use_raster:是否將熱圖圖像體渲染為光柵圖像。當(dāng)矩陣很大時(shí),它有助于減小文件大小。如果設(shè)置了cell_fun,則強(qiáng)制use_raster為FALSE
raster_device = c(“png”, “jpeg”, “tiff”, “CairoPNG”, “CairoJPEG”, “CairoTIFF”),
#raster_device:用于生成光柵圖像的圖形設(shè)備
raster_quality = 2,
#raster_quality:設(shè)置為大于1的值將改善光柵圖像的質(zhì)量。
raster_device_param = list()
#raster_device_param:所選圖形設(shè)備的其他參數(shù)列表。
)

同時(shí)附上pheatmap包中pheatmap函數(shù)的參數(shù)解讀

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 # 需要繪制熱圖的數(shù)字矩陣。
color # 表示顏色,賦值漸變顏色調(diào)色板colorRampPalette屬性,選擇"藍(lán),白,紅"漸變,分為100個(gè)等級(jí)
# 例 color =  colorRampPalette(c("navy", "white", "red"))(100)
kmeans_k # 繪制熱圖的行聚類數(shù),如果是NA,那么行不會(huì)聚類。
breaks  # 設(shè)置mat數(shù)值范圍的數(shù)字序列
border_color # 表示熱圖上單元格邊框的顏色,如果不繪制邊框,則使用NA
cellwidth # 表示每個(gè)單元格的寬度,若選擇NA則表示適應(yīng)窗口
cellheight # 表示每個(gè)單元格的高度,若選擇NA則表示適應(yīng)窗口
scale # 表示值均一化的方向,或者按照行或列,或者沒(méi)有,值可以是"row",  “column” 或者"none"
cluster_rows # 表示進(jìn)行行的聚類,值可以是FALSE或TRUE
cluster_cols # 表示進(jìn)行列的聚類,值可以是FALSE或TRUE
clustering_distance_rows # 表示行距離度量的方法
clustering_distance_cols # 表示列距離度量的方法
clustering_method # 表示聚類方法,值可以是hclust的任何一種,
# 如"ward.D",“single”,  “complete”, “average”, “mcquitty”, “median”, “centroid”, “ward.D2”
clustering_callback # 回調(diào)函數(shù)來(lái)修改聚類
cutree_rows # 基于層次聚類(使用cutree)劃分行的簇?cái)?shù)(如果未聚集行,則忽略參數(shù))
cutree_cols  # 基于層次聚類(使用cutree)劃分列的簇?cái)?shù)(如果未聚集行,則忽略參數(shù))
treeheight_row # 行的樹(shù)的高度,
treeheight_col # 列的樹(shù)的高度
legend # TRUE或者FALSE,表示是否顯示圖例
legend_breaks # 設(shè)置圖例的斷點(diǎn),如legend_breaks =  -1:4
legend_labels # legend_breaks對(duì)應(yīng)的標(biāo)簽例:legend_breaks = -1:4, legend_labels = c(“0”,“1e-4”, “1e-3”, “1e-2”, “1e-1”, “1”)
annotation_row # 行的分組信息,需要使用相應(yīng)的行名稱來(lái)匹配數(shù)據(jù)和注釋中的行,注意之后顏色設(shè)置會(huì)考慮離散值還是連續(xù)值,格式要求為數(shù)據(jù)框
annotation_col # 列的分組信息,需要使用相應(yīng)的列名稱來(lái)匹配數(shù)據(jù)和注釋中的列,格式要求為數(shù)據(jù)框
annotation_colors  # 用于手動(dòng)指定annotation_row和annotation_col  track顏色的列表。
annotation_legend # 是否顯示圖例的名稱。
annotation_names_row # 是否顯示行注釋的名稱。
annotation_names_col # 是否顯示列注釋的名稱。
show_rownames # 是否顯示行名
show_colnames # 是否顯示列名
main  # 圖的名字
fontsize # 圖的字體大小
fontsize_row # 行名的字體大小,默認(rèn)與圖的字體大小相同
fontsize_col # 列名的字體大小,默認(rèn)與圖的字體大小相同
angle_col # 列標(biāo)簽的角度,可選擇 (0, 45, 90, 270 and 315)
display_numbers # 表示是否將數(shù)值顯示在熱圖的格子中,如果這是一個(gè)矩陣(與原始矩陣具有相同的尺寸),則顯示矩陣的內(nèi)容而不是原始值。
number_format # 設(shè)置顯示數(shù)值的格式,較常用的有"%.2f"(保留小數(shù)點(diǎn)后兩位),"%.1e"(科學(xué)計(jì)數(shù)法顯示,保留小數(shù)點(diǎn)后一位)
number_color # 設(shè)置顯示內(nèi)容的顏色
fontsize_number # 設(shè)置顯示內(nèi)容的字體大小
labels_row  # 代替行名的自定義標(biāo)簽 
labels_col # 代替列名的自定義標(biāo)簽
filename # 圖片保存位置以及文件名
width # 手動(dòng)設(shè)置輸出文件的寬度(單位:英寸)
height # 手動(dòng)設(shè)置輸出文件的高度(單位:英寸)
silent # 不繪制熱圖
na_col # 缺失值的顏色

reference: Zuguang Gu, Roland Eils and Matthias Schlesner, Complex heatmaps reveal patterns and correlations in multidimensional genomic data, Bioinformatics, 2016

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容