溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用ComplexHeatmap繪制單個熱圖

發布時間:2022-07-08 14:17:59 來源:億速云 閱讀:271 作者:iii 欄目:開發技術

這篇文章主要介紹“怎么使用ComplexHeatmap繪制單個熱圖”,在日常操作中,相信很多人在怎么使用ComplexHeatmap繪制單個熱圖問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用ComplexHeatmap繪制單個熱圖”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

    前言

    ComplexHeatmap可以繪制很復雜的熱圖,能滿足日常以及文章所需,本次先簡單的介紹單個熱圖繪制的內容。

    單個熱圖由熱圖主體和熱圖組件組成。其中主體可分為行和列;組件可以是標題、樹狀圖、矩陣名稱和熱圖注釋,在主圖的四周均可,且順序可調整。

    怎么使用ComplexHeatmap繪制單個熱圖

    一 載入數據,R包

    1.1 載入ComplexHeatmap包

    #if (!requireNamespace("BiocManager", quietly = TRUE))
    #    install.packages("BiocManager")
    #BiocManager::install("ComplexHeatmap")
    library(ComplexHeatmap)

    1.2 載入數據

    為更貼近生信使用場景,直接使用內置的基因表達數據

    expr = readRDS(paste0(system.file(package = "ComplexHeatmap"), "/extdata/gene_expression.rds"))
    #查看數據
    str(expr)
    expr[1:4,c(1:4,25:27)]

    怎么使用ComplexHeatmap繪制單個熱圖

    拿到一個新數據后,除了檢查[1:4,1:4]外,也許還需要看看最后幾列,另外還需要觀察列名稱的規律。

    去除最后幾列,或者只選取列名字包含cell的(TCGA數據處理中也會經常遇到)

    mat = as.matrix(expr[, grep("cell", colnames(expr))])

    1.3 繪制最簡單的熱圖

    Heatmap(mat)

    怎么使用ComplexHeatmap繪制單個熱圖

    可以看到有很多需要“美化”的地方,別急,一點點來。

    二 熱圖修飾

    2.1 顏色

    1)連續型變量

    可以使用circle::colorRamp2()函數來生成Heatmap()中的顏色映射函數,輸入參數為分割位置以及分割點上的顏色。下例中,大于12的值都映射為紅色,小于12的值映射為綠色;

    library(circlize)</code><code>#c中的范圍要根據實際情況設置</code><code>col_fun = colorRamp2(c(8, 12, 16), c("green", "white", "red"))</code><code>Heatmap(mat, name = "mat", col = col_fun)

    怎么使用ComplexHeatmap繪制單個熱圖

    2)分類型變量

    更改分類變量的顏色,需要把所有分類的數字均進行賦值。

    discrete_mat = matrix(sample(1:4, 100, replace = TRUE), 10, 10)
    colors = structure(1:4, names = c("1", "2", "3", "4")) # black, red, green, blue
    Heatmap(discrete_mat, name = "mat", col = colors,
        column_title = "a discrete numeric matrix")

    怎么使用ComplexHeatmap繪制單個熱圖

    更多顏色修改請參考官方文檔,文末的參考資料的鏈接。

    2.2 標題

    1)設置行,列和圖例的標題
    Heatmap(mat, 
            name = "legend title", #圖例title
            column_title = "I am a column title", #列title 
            row_title = "I am a row title",
            column_title_side = "bottom") #行title

    怎么使用ComplexHeatmap繪制單個熱圖

    2)設置標題的位置,顏色,字體,大小
    Heatmap(mat, name = "mat", 
            row_title = "row title",
            row_title_rot = 0, #旋轉方向
            column_title = "I am a big column title", 
            column_title_side = "bottom", #標題位置
            column_title_gp = gpar(fontsize = 20, fontface = "bold",col = "red")) #顏色,字體,大小

    怎么使用ComplexHeatmap繪制單個熱圖

    3)設置標題的背景

    column_title_gp中的填充參數來設置標題的背景顏色

    Heatmap(mat, name = "mat", 
            column_title = "I am a column title", 
            column_title_gp = gpar(fill = "red", col = "white", border = "blue"),
            )

    怎么使用ComplexHeatmap繪制單個熱圖

    2.3 聚類

    聚類是熱圖可視化的關鍵組成部分,在ComplexHeatmap包中可以非常靈活的進行設置。

    A:一般設置

    cluster_rows/columns :是否進行聚類

    show_column/row_dend :是否顯示聚類樹

    column/row_dend_side :聚類圖繪制的位置

    column_dend_height/row_dend_widht :聚類樹的高度 和 寬度

    Heatmap(mat, name = "mat",</code><code>        cluster_columns = T,  </code><code>        cluster_rows = F, ## turn off row clustering</code><code>        show_column_dend = T, ## hide column dendrogram</code><code>        show_row_dend = F,</code><code>        column_dend_side = "top",  #dendrogram location</code><code>        column_dend_height = unit(4, "cm"))

    注意:聚類樹的高度 和 寬度有區別。

    B:距離方法

    可選計算距離的方式包括pearson, spearman以及kendall , 或者計算距離的自定義函數。

    Heatmap(mat, name = "mat", clustering_distance_rows = "pearson",
        column_title = "pre-defined distance method (1 - pearson)")

    怎么使用ComplexHeatmap繪制單個熱圖

    自定義

    Heatmap(mat, name = "mat", clustering_distance_rows = function(x, y) 1 - cor(x, y),
        column_title = "a function that calculates pairwise distance")
    C:聚類方法

    支持hclust()中的聚類方法。

    Heatmap(mat, name = "mat", clustering_method_rows = "single")
    D:聚類樹的渲染

    根據聚類結果將聚類樹的枝設置不同的顏色

    library(dendextend)</code><code>row_dend = as.dendrogram(hclust(dist(mat)))</code><code>row_dend = color_branches(row_dend, k = 4) # `color_branches()` returns a dendrogram object</code><code>Heatmap(mat, name = "mat", </code><code>        cluster_rows = row_dend,</code><code>        row_dend_width  = unit(4, "cm"))

    怎么使用ComplexHeatmap繪制單個熱圖

    2.4 設置行列順序

    通過row_order/column_order函數自定義其排序,為方便展示選擇前30個基因。

    mat <- mat[1:30,]
    Heatmap(mat, name = "mat", 
              row_order = order(as.numeric(gsub("gene", "", rownames(mat)))), #將gene1替換為1,在排序
              column_order = sort(colnames(mat)),
              column_title = "reorder matrix")

    怎么使用ComplexHeatmap繪制單個熱圖

    注:此處將gene1,gene10 先替換掉gene(不去的話是按照ASCII碼),然后按照數值排序。

    到此,關于“怎么使用ComplexHeatmap繪制單個熱圖”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女