complexHeatmap版本的對角線熱圖

2020-12-25 Y叔談生信

寫在前面

這幾天看到一直有人在重複這個圖,之前看到過base plot的版本,看到過ggplot2的版本。這裡就把之前使用complexheatmap繪製的版本也拿來和大家分享一下。

主要操作

加載包

注意:ComplexHeatmap包的安裝需要安裝github版本的。很多函數在bioconductor版本沒有。

另外由於complexheatmap在繪製熱圖的時候,對於顏色的指定是需要用到circlize包的colorRamp2函數,所以需要提前加載。

library(ComplexHeatmap)library(circlize)Sys.setenv(LANGUAGE = "en") #顯示英文報錯信息options(stringsAsFactors = FALSE) #禁止chr轉成factor

輸入文件

輸入文件使用之前的示例文件

# 左上角的數據up <- read.table("easy_input_amp.txt",sep = "\t",row.names = 1,check.names = F,stringsAsFactors = F,header = T)up[1:3, 1:3]## KIRC KIRP KICH## ALKBH5 0.04924242 0.5902778 0.00000000## FTO 0.18560606 0.5243056 0.31818182## ZC3H13 0.03977273 0.1006944 0.03030303# 右下角的數據dn <- read.table("easy_input_del.txt",sep = "\t",row.names = 1,check.names = F,stringsAsFactors = F,header = T)dn[1:3, 1:3]## KIRC KIRP KICH## ALKBH5 0.08522727 0.04861111 0.75757576## FTO 0.04166667 0.02430556 0.07575758## ZC3H13 0.15340909 0.08333333 0.66666667# 檢驗兩個矩陣列名和行名是一致的identical(rownames(up), rownames(dn))## [1] TRUEidentical(colnames(up), colnames(dn))## [1] TRUE繪圖前處理

由於加載的數據的基因名和注釋的結果的列是反的,重新排列數據框

RightOrder <- rev(rownames(up))up <- up[RightOrder,]dn <- dn[RightOrder,]設置顏色

對於ComplexHeatmap當中的顏色設置都是通過,colorRamp2來進行設置的

UpColor <- colorRamp2(breaks = c(0, 1), colors = c("#FFFADD","#AB221F"))DnColor <- colorRamp2(breaks = c(0, 1), colors = c("#FFFADD","#3878C1"))繪圖

使用ComplexHeatmap繪圖的原理主要是

選擇一個數據集,繪製一個空的邊框。對於熱圖當中的聚類,則是基於這個數據集來進行的。同時熱圖的繪製會自動產生一個顏色的注釋,這個不是我們需要的,所以需要去掉。## 使用up數據集來產生數據Heatmap(up, column_title = "Copy number variation across cancer types", ## 列的標題 rect_gp = gpar(type = "none"), #繪製空的數據框 show_heatmap_legend = F, ##是否顯示基本的注釋說明 cluster_rows = T, cluster_columns = T, ## 是否對行列進行聚類 )

繪製左側的注釋信息使用HeatmapAnnotation繪製注釋信息,

row_an <- HeatmapAnnotation(type = c(rep("R", 10), rep("W", 8), rep("E", 2)), ##注釋信息的內容。 show_annotation_name = F, ## 是否顯示注釋的標題 col = list(type = c("R" = "#5AC9FA", "W" = "#FAC67A", "E" = "#51B743")), ## 注釋信息的顏色 show_legend = T, ## 是否顯示注釋信息的說明 annotation_legend_param = list(title = "m6A group",nrow = 1), ## 注釋信息圖例的個性化說明,nrow表示把所有分類的圖例放到一行。 which = "row"#對行或者列進行注釋 )通過cell_fun參數來自定義每個熱圖方格內顯示的內容。這裡我們主要通過兩個grid.polygon繪製兩個三角形,三角形當中的填充色分別是up和down的值。首先自定義一個接受兩個數據集合的函數

DiagFunc <- function(up, down){function(j, i, x, y, width, height, fill){ grid.polygon(unit.c(x - 0.5*width, x - 0.5*width, x + 0.5*width), unit.c(y - 0.5*height, y + 0.5*height, y + 0.5*height), gp = gpar(fill = DnColor(down[i, j]), col = "grey")) grid.polygon(unit.c(x + 0.5*width, x + 0.5*width, x - 0.5*width), unit.c(y + 0.5*height, y - 0.5*height, y - 0.5*height), gp = gpar(fill = UpColor(up[i, j]), col = "grey")) }}繪製基本圖形

p1 <- Heatmap(up, column_title = "Copy number variation across cancer types", rect_gp = gpar(type = "none"), show_heatmap_legend = F, cluster_rows = F, cluster_columns = T, ##繪製空的熱圖框 left_annotation = row_an, ##添加左側注釋信息 cell_fun = DiagFunc(up = up, down = dn) ## 繪製表格內的內容 ); p1

繪製注釋

圖片基本繪製完成,但是熱圖當中的顏色還沒有具體的說明,ComplexHeatmap可以通過Legend繪製自定義注釋。

lgd <- list(Legend(title = "CNV Gain", ## 注釋的標題 col_fun = UpColor, ## 注釋的顏色 at = c(0,0.5,1), ## 注釋刻度的分組 direction = "horizontal"## 注釋的方向 ), Legend(title = "CNV Loss", ## 注釋的標題 col_fun = DnColor, ## 注釋的顏色 at = c(0,0.5,1), ## 注釋刻度的分組 direction = "horizontal"## 注釋的方向 ) )熱圖和注釋融合到一起

通過draw函數可以把熱圖和注釋融合到一起

draw(p1, annotation_legend_list = lgd, annotation_legend_side = "bottom", heatmap_legend_side = "bottom", merge_legend = TRUE)

熱圖專輯

聽說你還不會畫熱圖多個熱圖,多種配色,還要分開畫圖例?連續型和離散型數據一起畫熱圖,外加分開配色和圖例不同數據集畫出的熱圖,用同樣的顏色區間上色?一個更好用的pheatmap用ggplot2來畫帶有對角線的熱圖。看Y叔的R包,寫自己的圖層。視頻教學-小白也能點點滑鼠畫出對角線熱圖

相關焦點

  • 利用ComplexHeatmap繪製熱圖(一)
    之前熱圖三部曲介紹了使用ggplot2和pheatmp繪製熱圖R語言學習 - 熱圖繪製 (heatmap)  R語言學習 - 熱圖美化  R語言學習 - 熱圖簡化後來2017年最後學習1010個熱圖繪製方法簡略介紹了10種熱圖繪製方式,CIRCOS增加熱圖、點圖、線圖和區塊屬性是另一種形式的熱圖。
  • ComplexHeatmap |理解繪圖邏輯繪製熱圖
    之前熱圖三部曲介紹了使用ggplot2和pheatmp繪製熱圖R語言學習 - 熱圖繪製 (heatmap)  R語言學習 - 熱圖美化  R語言學習 - 熱圖簡化後來2017年最後學習1010個熱圖繪製方法簡略介紹了10種熱圖繪製方式,CIRCOS增加熱圖、點圖、線圖和區塊屬性是另一種形式的熱圖。
  • R包ComplexHeatmap繪製個性化熱圖
    使用ComplexHeatmap包繪製個性化熱圖作者:劉夢瑤 諾禾致源 微生物信息審稿:劉永鑫 中國科學院遺傳與發育生物學研究所
  • 使用ComplexHeatmap包繪製個性化熱圖
    使用ComplexHeatmap包繪製個性化熱圖作者:劉夢瑤 諾禾致源 微生物信息審稿:劉永鑫 中國科學院遺傳與發育生物學研究所
  • R語言熱力圖綜合教程-heatmap、d3heatmap和ComplexHeatmap
    R包和功能很多,包括:heatmap()[R基本函數,統計數據包]:繪製一個簡單的熱圖heatmap.2()[ gplots R包]:與R base函數相比,繪製了增強的熱圖。pheatmap()[ pheatmap R包]:繪製漂亮的熱圖,並提供更多控制項來更改熱圖的外觀。d3heatmap()[ d3heatmap R包]:繪製交互式/可單擊的熱圖ComplexHeatmap R / Bioconductor的包]:繪製,注釋和排列複雜熱圖(用於基因組數據分析是非常有用的)
  • ComplexHeatmap中legend的新功能
    在文末你可以看到一個包含了熱圖的完整例子。離散值的legend如果legend中的label文字超過一行的,如下所示,多行文字所對應的legend的格子會自動延長。0.1, 0.5, 1),    break_dist = c(1, 1, 3, 3),     legend_height = unit(4, "cm"))包含了熱圖的例子
  • R 數據可視化 —— 對角線分割熱圖
    R 數據可視化 —— 對角線分割熱圖 前言 不是在幫人解決問題,就是在解決問題的路上~~~。之前所介紹的熱圖,其每個顏色塊都是一個矩形,而今天要介紹的是如何繪製對角線分割熱圖。也就是每個顏色塊矩形被對角線分割為上下兩個三角形,然後兩個三角形分別用不同的變量來設置填充色。
  • 一招學會熱圖(heatmap)繪製之R語言heatmap函數
    寫在前面 本文介紹使用R語言內置函數heatmap()繪製熱圖。老調重彈,在了解R語言基本思維、使用方法之後,每學一個新的函數或者方法都有跡可循。一般都是先使用幫助文檔學習新函數的定義和使用方法,接著搜索測試數據進行訓練即可。文末附heatmap說明書。
  • 10天學會|Python繪圖(6):4種常見的Heatmap熱圖
    今天,譚編給大家講解一下4種常見的heatmap熱圖Python源碼(文末有獲取方式),稍改即用。首先我們通過以下視頻來了解:如何輕鬆修改並繪製熱圖。後續各章節可以詳細了解具體的要點、難點。對於每張圖,可以修改數據(二維數組,如下圖的harvest數組)、修改XY標籤文本(列表,如下圖綠色字體,用引號),點擊綠色三角運行按鈕,即可繪製出圖。
  • R語言學習 - 熱圖繪製 (heatmap)
    > data2 <- read.table(text=txt,sep=";", header=T, row.names=1, quote="", check.names = F)> head(data2)       Zygote 2_cell 4_cell 8_cellGene_1    1.0    2.0    3.0
  • 【R語言】heatmap顯示樣本類型
    前面分了四期類型給大家講了繪製熱圖時的配色方案☞【R語言】熱圖繪製-heatmap函數+默認配色方案
  • 用R做heatmap圖,附加差異表達分析代碼~
    今天就給大家介紹一下如何用R做晶片表達數據的haatmap圖(PS:當然可以用於其他數據)。代碼如下,我主要用了heatmap.2函數,來自gplots包,下面的代碼中還貼了用limma包篩選差異表達基因的代碼。
  • 工具 用R快速製作heatmap圖,一學就會!
    這個heatmap圖是不是很炫?知道是怎麼做出來的嗎?想學跟我來吧!1、首先下載R(https://www.r-project.org/)Mac OS X版本示範安裝pheapmap程序包。3、準備數據文件在Excel裡面輸入所需要畫heatmap圖數據,第一列為名稱,後面的為均一化之後的數值。二代測序的表達量差異的結果,晶片表達差異的結果,甚至是qPCR的結果都可以。
  • 用R 的pheatmap畫熱圖
    R裡面也有很多畫熱圖的函數,最常用的是heatmap,heatmap.2和pheatmap。個人認為pheatmap是非常不錯的一個畫熱圖的函數,操作起來比前兩個方便好用的多。在別的公眾號裡面也看到一些關於用這個函數畫熱圖的文章,但是有一些小問題小編覺得需要了解,下面聽小編一一講解。
  • R繪圖-heatmap
    # 1.設置工作目錄及調用R包setwd("D://heatmap") library(vegan)library(RColorBrewer)library(gplots)library(permute)library(lattice)
  • 圖形解讀系列 | 給你5個示例,你能看懂常用熱圖使用嗎?
    熱圖是一種很常見的圖,其基本原則是用顏色代表數字,讓數據呈現更直觀、對比更明顯。常用來表示不同樣品組代表性基因的表達差異、不同樣品組代表性化合物的含量差異、不同樣品之間的兩兩相似性。實際上,任何一個表格數據都可以轉換為熱圖展示。熱圖基本解讀熱圖通過將數據矩陣中的各個值按一定規律映射為顏色展示,利用顏色變化來可視化比較數據。
  • R語言之heatmap繪製
    在日常研究中,我們往往習慣於選擇熱圖實現這一基因表達模式可視化的需求,進而直觀的表述我們的基因表達模式的分析結果。今天我們介紹關於R語言繪製熱圖的一種方法,那就是利用pheatmap包進行熱圖的繪製。1 安裝pheatmap包有兩種方式:    a.install.packages(「pheatmap」)    b.
  • R語言學習 - 熱圖簡化
    前面推出過熱圖繪製和熱圖美化,現在來一個函數繪製熱圖的簡化方式。文後更有不用寫代碼的在線工具可用。
  • 一個heatmap是如何練成的!(後附視頻解析)
    Heatmap(熱圖)大家肯定不陌生,在很多醫學、自然科學發表的重量級論文中常見其蹤影。
  • 對角線構圖的定義是什麼?帶你掌握對角線構圖
    對角線構圖是什麼  對角線構圖其實是引導線構圖的一類,將畫面中的線條沿對角線方向展布,便形成了對角線構圖。  沿對角線展布的線條可以是直線,也可以是曲線、折線或物體的邊緣,只要整體延伸方向與畫面對角線方向接近,就可以視為對角線構圖。