ComplexHeatmap:一個功能強大的熱圖可視化R包

一、概述

ComplexHeatmap是一個用於創建高度自定義和功能強大的熱圖可視化圖形的R包。它提供了許多功能,例如定製行和列注釋,對熱圖進行排序和聚類,同時支持許多表達式和數據類型。

下面我們將從多個方面進行詳細介紹,以便更全面地了解ComplexHeatmap包的功能和用法。

二、創建熱圖

創建熱圖是使用ComplexHeatmap的第一步。我們可以使用Heatmap函數創建一個最基本的熱圖,代碼如下所示:


library("ComplexHeatmap")
mat = matrix(rnorm(120), 10, 12)
Heatmap(mat)

運行代碼後,會生成一個簡單的熱圖。然而,我們可以通過添加更多參數來定製我們的熱圖,將其變得更加美觀和易於理解。

三、添加行列注釋

在熱圖中添加行列注釋是幫助我們理解和解釋數據的重要方式。ComplexHeatmap允許我們添加任意類型的注釋,並使用rowAnnotationcolAnnotation參數來指定它們。以下是將兩個分別由顏色和文字注釋的行和一組由斑點和方向注釋的列添加到熱圖中的示例代碼:


mat = matrix(rnorm(120), 10, 12)
rownames(mat) = paste0("R", 1:10)
colnames(mat) = paste0("C", 1:12)
row_col = data.frame(color = c(rep("red", 5), rep("blue", 5)),
                      text = c(paste0("row", 1:5), paste0("row", 6:10)))
col_col = data.frame(dot = rep(1:2, 6), direction = rep(c("up", "down"), 6))
Heatmap(mat, row_title = "Rows", column_title = "Columns",
        row_annotation = row_col,
        column_annotation = col_col)

運行代碼後,我們將看到在行和列標題旁邊添加了注釋,並在右側添加了一個注釋圖例。

四、熱圖排序和聚類

熱圖排序和聚類是理解數據模式和關係的重要方式。ComplexHeatmap提供了各種排序和聚類選項來幫助用戶更好地理解數據,例如對行和列進行排序和聚類,根據個別行和列將熱圖拆分為多個小透視表格等。

以下是對行和列進行層次聚類和指定行順序的示例代碼:


mat = matrix(rnorm(120), 10, 12)
rownames(mat) = paste0("R", 1:10)
colnames(mat) = paste0("C", 1:12)
mat_hclust = hclust(dist(mat))
row_order = rownames(mat)[mat_hclust$order]
Heatmap(mat, row_title = "Rows",
        clustering_distance_rows = "euclidean", clustering_method_rows = "complete",
        row_order = row_order,
        show_row_names = FALSE)

運行代碼後,我們將看到對行和列進行層次聚類並指定行排序的結果。

五、複雜的注釋排布方式

通過使用ComplexHeatmap中提供的各種注釋排布方式,我們可以創建具有靈活性和美觀度的高度自定義熱圖。以下是一組垂直和水平顯示的注釋、自定義大小和位置等代碼示例,可以極大地改善熱圖的可視化效果。


mat = matrix(rnorm(120), 10, 12)
rownames(mat) = paste0("R", 1:10)
colnames(mat) = paste0("C", 1:12)
annotation_row = matrix(rnorm(30), 10, 3)
rownames(annotation_row) = paste0("s", 1:10)
heatmap_legend_param = list(title = "Value",
                            at = seq(-2, 2, length.out = 5),
                            labels = c("-2", "-1", "0", "1", "2"))
Heatmap(mat, row_title = "Rows",
        column_title = "Columns",
        name = "Expression",
        right_annotation = annotation_row,
        heatmap_legend_param = heatmap_legend_param,
        col = colorRamp2(seq(-2, 2, length.out = 100), c("blue", "white", "red")),
        top_annotation = anno_block(rep("Title", 5), col = "white", border = "black"),
        bottom_annotation = anno_empty(),
        left_annotation = anno_block(rep("Group1", 12), border = "black",
                                     text_rot = 45, text_size = 8),
        row_dend_reorder = TRUE, row_dend_height = unit(4, "cm"))

運行代碼後,我們將看到自定義大小和位置的注釋,列標題、行注釋標註和注釋圖例。

六、自定義主題和樣式

在ComplexHeatmap中,我們允許用戶自定義主題和樣式來定製其熱圖的外觀。例如,我們可以更改注釋文本的顏色,字體和大小,添加背景顏色和圖形,並根據需要更改行列注釋的大小和位置。以下是一組自定義主題和樣式的示例代碼:


mat = matrix(rnorm(120), 10, 12)
rownames(mat) = paste0("R", 1:10)
colnames(mat) = paste0("C", 1:12)
col_fun = colorRamp2(seq(-3, 3, length.out = 100), c("blue", "white", "red"))
annotation_row = matrix(rnorm(30), 10, 3)
rownames(annotation_row) = paste0("s", 1:10)
heatmap_legend_param = list(title = "Value",
                            at = seq(-2, 2, length.out = 5),
                            labels = c("-2", "-1", "0", "1", "2"))
Heatmap(mat, row_title = "Rows",
        column_title = "Columns",
        name = "Expression",
        right_annotation = annotation_row,
        heatmap_legend_param = heatmap_legend_param, col = col_fun) +
  theme(title = "My heatmap",
        show_names = TRUE,
        row_title_side = "left", row_title_gp = gpar(fontsize = 16),
        col_title_gp = gpar(fontsize = 16),
        heatmap_legend_side = "right",
        heatmap_legend_gp = gpar(fontsize = 14),
        bottom_annotation_legends_gp = gpar(fontsize = 12),
        row_names_gp = gpar(fontsize = 12),
        column_names_gp = gpar(fontsize = 12),
        top_annotation_height = unit(2, "cm"),
        top_annotation_layout_height = unit(1.25, "cm"),
        bottom_annotation_height = unit(2, "cm")) +
  style_annotation(title_gp = gpar(fontsize = 10),
                   labels_gp = gpar(fontsize = 8),
                   border = TRUE, border_gp = gpar(col = "darkgray", lwd = 0.5),
                   annotator = "text",
                   text_gp = gpar(fontsize = 6)) +
  style_column(column_title_gp = gpar(fontsize = 16),
               column_names_gp = gpar(fontsize = 12),
               column_title_side = "top",
               column_title_rot = 45)

運行代碼後,我們將看到對注釋和標題的更改、列標題的旋轉和字體增大,並在下方添加自定義注釋。這增加了我們的熱圖可視化的美觀性和易讀性。

七、結語

ComplexHeatmap是一個功能強大的R包,提供了各種熱圖可視化選項。本文從不同方面介紹了ComplexHeatmap的功能和用法,從基本熱圖到注釋和排版,以及更高級的主題和樣式設計等。熟練掌握ComplexHeatmap對於數據分析和可視化的工作來說是必不可少的。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/251702.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-13 17:32
下一篇 2024-12-13 17:32

相關推薦

發表回復

登錄後才能評論