熱圖「霸屏」的測序時代,如何完成高顏值的熱圖操作

2021-02-20 小張聊科研

隨著各種測序技術的不斷發展,目前,測序已然成為生物學開拓新發現的主要手段。而對於測序實驗結果的圖形也是至關重要的。一方面,圖形的展示可以直觀的窺見實驗結果,方便人們閱讀和理解來獲取關鍵的研究內容。另一方面,「高顏值」的圖形總是能夠吸引和提起工作者的閱讀興趣。

熱圖,是一種不可或缺的展現晶片和測序結果的方式,這種圖在文章中非常常見,不論是高影響因子還是低影響因子的文章,都會選擇用熱圖作為一種結果展現方法。現如今,做熱圖的工具也越來越多,例如R語言、Excel、HemI、Public Library of Bioinformatics等,雖然很多軟體都可以進行簡單的熱圖繪製,但是總體而言,都沒有R語言的可操作性和功能強大。但是很多小夥伴因為沒有R語言的基礎,所以在各處看到各種解說,總體給人一種很亂的感覺。那麼我們就系統的進行一次R語言的熱圖繪製教程,並提供代碼只要結合自己的數據,就能畫出心儀的熱圖了。

我們使用R語言中的pheatmap包來實現(如果沒有安裝R,那麼在https://www.r-project.org/ 網站下載R,根據指示安裝,操作非常簡單。同時下載Rstudio配合使用,下載網址https://www.rstudio.com/。兩者安裝在同一個工作目錄下)。


第一步就是數據的準備了

先用excel創建數據,行是基因的表達量,列是不同的天數(或者是不同的組織),如下圖:

我一般習慣將其保存為.txt文件進行操作。


第二步就是直接開畫(代碼如下)

R語言需要創建工作目錄,通俗地說就是你在哪個地方進行這些操作,你的文件和結果也將保存在這些工作目錄下。

1. setwd("E:\\Rdata\\heatmap") ##創建工作目錄  

2. expression <- read.table("example.txt",sep = "\t",header = T,row.names = 1) ##讀取文件  

3. library(pheatmap) ##載入程序包(如果是第一次使用,沒有安裝這個程序包,請單獨運行代碼install.packages("pheatmap"),然後再載入)  

4. pheatmap(expression,color=colorRampPalette(c("green2","black","red2"))(100),fontsize_row=10,fontsize_col=10,scale="row",border_color=NA,cluster_col = F,show_rownames = T, show_colnames =F)    

##表示代碼的注釋信息,對代碼的運行沒有任何影響

效果圖如下:

這就是最簡單的畫圖了,很多人會說,太easy了,沒有什麼可學的,別著急,下面我們將進行下一階段的進級。然後就可以隨心所欲的進行操作了。

我想很多小夥伴和我一樣,第一眼看熱圖應該關心的是它的顏色吧,這也是人們的共同特點,畢竟對色彩比較敏感。


1、色彩的調整

1. pheatmap(expression,color=colorRampPalette(c("blue2","black","yellow2"))(100),fontsize_row=10,fontsize_col=10,scale="row",border_color=NA,cluster_col = F,show_rownames = T, show_colnames =F)  

色彩的調整可以在color部分代碼調整。R語言給大家提供了成百上千種顏色,所以完全不用擔心找不到自己喜歡的顏色。那唯一擔心的事情就是我不知道這些顏色叫什麼名字,不用擔心,筆者也是從這個階段過來的,所以我保存了R語言顏色表,大家可以自己去下載使用,永久連結哦。附連結如下:https://pan.baidu.com/s/1a1v9TjxTMhPHYa-FHC9QPQ

比如我把顏色變成yellow2,black, blue2效果如下,這也是文章比較常用的顏色搭配。


2、聚類的調整

我們上面完成圖可以看出,只是對行進行了聚類,那麼有時候不需要或者我們對列也進行聚類呢,我們執行下面的操作就可以實現了。

1. pheatmap(expression,color=colorRampPalette(c("blue2","black","yellow2"))(100),fontsize_row=10,fontsize_col=10,scale="row",border_color=NA,cluster_col =F, cluster_row=F,show_rownames = T, show_colnames =F)  

###以上這段代碼表示行列都不聚類。

cluster_col = F,cluster_row=F,這兩個選項就可以調整聚類了,F表示false,不聚類。col表示列,row表示行。效果如下


3、行名列明的調整

行列,明表示的是你聚類的項目。在熱圖中是不可或缺的。我們通過調整代碼中的show_rownames, show_colnames 這兩個選項來實現。假如都要顯示,就選擇T。

1. pheatmap(expression,color=colorRampPalette(c("green2","black","red2"))(100),fontsize_row=10,fontsize_col=10,scale="row",border_color=NA,cluster_col = T, cluster_row=T,show_rownames = T, show_colnames =T)  

行列名都顯示並進行聚類的效果如下:


4、分類注釋(層次聚類)

有時候我們的樣本是好幾個類別(比如不同的天數,不同的處理組,正常組癌症組等等),光靠列名很難分辨,我們就可以在熱圖上標註注釋出來,就很清楚了。這個時候,我們就要在上面基礎代碼的基礎上,再加代碼來實現。首先需要定類別,然後明確分組信息.總體的代碼如下。

1. setwd("E:\\Rdata\\heatmap") ##創建工作目錄  

2. designNC = c(rep("D1",3),rep("D2",3),rep("D3",3))  

3. DEG_expl <- read.table("example.txt",sep = "\t",header = T,row.names = 1)  

4. group_info <- data.frame(row.names=names(DEG_expl),Types=designNC)  

5. group_info  

6. library(pheatmap) ##載入程序包(如果是第一次使用,沒有安裝這個程序包,請單獨運行代碼install.packages("pheatmap"),然後再載入)  

7. pheatmap(expression,color=colorRampPalette(c("green2","black","red2"))(100),fontsize_row=10,fontsize_col=10,scale="row",border_color=NA,cluster_col = T, cluster_row=T,show_rownames = T, show_colnames =T,annotation_col=group_info)  

效果圖如下:


5、其他的參數

R中的pheatmap提供了各種參數用於作圖,我們以上的操作已經夠我們一般的操作使用了,如果熱圖不僅適用於生物學研究,那麼可以使用help函數來獲取更多的包的詳細信息。運行代碼help(「pheatmap」)就可以查詢了。這裡我們介紹幾個可能會用到的參數。如果需要這些參數,直接加入到之前的代碼中就可以了。

border_color    用來調整熱圖每個格子的邊框顏色,如果不繪製邊框,則使用NA

cellwidth      單個單元格的寬度,不設置則不寫默認NA

cellheight      單個單元格的高度,不設置則不寫默認NA

scale    指示值是否應在行方向或列方向上居中和縮放字符,或者不是。對應的值是「row」,「column」和「none」

此外,legend和annotation等顏色位置都可以改變。


6、文件的保存

圖做好了,最後的最後千萬別忘記了導出,保存成自己需要的格式,R中可以點擊export,輸出各種常見的圖片格式和pdf格式。如下圖。按要求保存就可以了。

當然了,除了上面的辦法,還可以採用代碼的方式,直接保存到你的工作目錄。比如我們pdf格式(這裡解釋一下為什麼要保存pdf格式,根據筆者的經驗,直接用R導出的圖片文字在解析度上會發生變化,但是導出為pdf格式,就是矢量圖,我們可以將pdf文件用AI等軟體打開,不僅可以調整修飾,還可以導出為解析度較高的圖片格式)。代碼如下:

###pdf(file="example.pdf",width=10,height=10)###,這個代碼插入到畫圖代碼之前,最後輸入代碼dev.off()以表示這條代碼結束。

1. setwd("E:\\Rdata\\heatmap") ##創建工作目錄  

2. designNC = c(rep("D1",3),rep("D2",3),rep("D3",3))  

3. DEG_expl <- read.table("example.txt",sep = "\t",header = T,row.names = 1)  

4. group_info <- data.frame(row.names=names(DEG_expl),Types=designNC)  

5. group_info  

6. library(pheatmap) ##載入程序包(如果是第一次使用,沒有安裝這個程序包,請單獨運行代碼install.packages("pheatmap"),然後再載入)  

7. pdf(file="example.pdf",width=10,height=10)  

8. pheatmap(expression,color=colorRampPalette(c("green2","black","red2"))(100),fontsize_row=10,fontsize_col=10,scale="row",border_color=NA,cluster_col = T, cluster_row=T,show_rownames = T, show_colnames =T,annotation_col=group_info)  

9. dev.off()  

以這種方式導出後,右側的plot欄中將不會顯示圖片,圖片直接保存到了開始時我們建立的工作目錄中。

給大家總結分享的用R語言畫熱圖的方法就到此為止了,希望對科研中的你有所幫助,祝生活愉快,工作順利,謝謝!


關注後獲取《科研修煉手冊》1、2、3、4、5、6、7、8、9

相關焦點

  • 利用ComplexHeatmap繪製熱圖(一)
    之前熱圖三部曲介紹了使用ggplot2和pheatmp繪製熱圖R語言學習 - 熱圖繪製 (heatmap)  R語言學習 - 熱圖美化  R語言學習 - 熱圖簡化後來2017年最後學習1010個熱圖繪製方法簡略介紹了10種熱圖繪製方式,CIRCOS增加熱圖、點圖、線圖和區塊屬性是另一種形式的熱圖。
  • R繪圖(2): 離散/分類變量如何畫熱圖/方塊圖
    相信很多人都看到過上面這種方塊圖,有點像「華夫餅圖」的升級版,也有點像「熱圖」的離散版。
  • 熱圖竟然還能用Excel來畫?
    實驗數據分析處理的過程中,絕大部分的科研工作者,都會存在利用數據繪製熱圖的需求。
  • 【易文獻】可視化的PCA和熱圖分析工具—我的地盤我做主
    如何對這些數據進行分析,如何讓這些數據發揮更大效用,是絕大部分科研工作者的苦惱源頭,腫麼辦,腫麼辦呢?下面分享一款在線的簡單易行的PCA和熱圖web分析工具——ClustVis,用戶只需要上傳分隔符模式的txt文件或複製粘貼數據即可,通過簡單的操作處理上傳的數據和修改PCA和熱圖的展現形式,有效的提高大量數據的處理時間和提升輸出圖的美觀性。
  • 用Calypso在線繪製熱圖、樹狀圖及Krona圖
    如只需要做熱圖,可只上傳basic格式,如需做樹狀圖和Korna圖,則建議上傳v6格式。第三步要求上傳Qiime2生成的taxonomy文件,如沒有此文件可跳過此步。第四步上傳數據文件,一般指OUT表,包括多種格式,具體格式示例見左側黃框。上傳成功後右側框右下角出現next鍵,單擊進行下一步。2.  數據過濾和規範化
  • heatmaply包:繪製交互式熱圖
    heatmap(熱圖)常用於高維數據的可視化。數據集中的數據按照矩陣形式,編碼為彩色的網格結構。熱圖常附有樹狀圖。熱圖應用領域很多,如基因、相關性、缺失值等。heatmaply包能夠生成交互式地圖,滑鼠懸停可查看數值信息、拖動局部可放大查看。
  • 無聊圖熱榜1110
    問題解答:1,已補充動圖。2,圖不夠無聊?以上圖片都是蛋友貢獻上傳,蛋友通過OOXX投票,所以請大家多多貢獻自己覺得好笑的圖,自然內容就豐富起來了。如何發圖:因新浪關閉相冊接口,電腦上可用網頁發微博,然後複製圖片地址的方式傳圖。微信小程序「煎了個蛋」(開發者Joiningss)已恢復傳圖功能,Joiningss開發更新了IOSApp煎蛋正式版本,讚美Joiningss。桌面端用網頁傳圖可用瀏覽器傳圖擴展。除了桌面端都暫時不能用了,小程序貌似能用了。
  • 哪一個熱圖函數更快?
    library(ComplexHeatmap)library(pheatmap)library(gplots)library(microbenchmark)set.seed(123)n = 1000mat = matrix(rnorm(n*n), nrow = n)首先我測試繪製熱圖同時也進行聚類
  • 圖王刻字機熱轉印方案
    圖王刻字機CE6000系列配置具備卓越的基本性能,廣泛應用於註冊圖標、印刷行業等專業用途及業餘愛好等領域。
  • 差異分析,oncomine做熱圖
    ONCOMINE資料庫的全景熱圖和散點圖是最常見的。怎樣才能做出文章能用的類似圖形呢?這裡涉及很多步驟,比如註冊ONCOMINE資料庫(已經介紹),怎樣搜索做出ONCOMINE資料庫的全景熱圖(這次介紹),怎樣使用PPT做表做圖。這裡,我們選取數據少點的舉例作圖,掌握方法是關鍵。
  • Python基礎熱圖-參數超級詳解
    1、matplotlib繪製熱圖matplotlib可通過以下兩種方法繪製heamap;matplotlib.axes.Axes.imshow原始效果圖,挺醜陋的;改進後效果圖(雖然要寫很多輔助函數實現,但是可以很好的實現自定義熱圖,需要高度個性化的小夥伴可以去摸索
  • 熱圖最佳實踐-pheatmap
    用pheatmap來繪圖首先要安裝這個包,它就一個功能,畫出熱圖即可,號稱是pretty heatmap,的確比其它的好用很多。
  • 【5分鐘學習】pheatmap 繪製熱圖​
    繪製熱圖需要什麼?(學習幫助文檔,嘗試自己在R語言中製作繪製熱圖的表格)3. R包的二進位安裝方法?(ggplot2、vegan、pheatmap、corrplot、limma包安裝)4. 表格文件的讀入?
  • R語言實現火山圖熱圖,教程含代碼
    通常橫坐標用log2(fold change)表示,差異越大的基因分布在兩端,縱坐標用-log10(pvalue)表示,熱圖(heatmap)用不同的顏色和顏色的深淺來展示數據之間的差異,直觀、美麗、大方,深受科研工作者的喜愛,尤其是轉錄組類的文章裡,幾乎必有一幅熱圖用來展示差異表達基因。一,準備文件準備好差異的基因在樣品表達的文件。
  • R包ComplexHeatmap繪製個性化熱圖
    使用ComplexHeatmap包繪製個性化熱圖作者:劉夢瑤 諾禾致源 微生物信息審稿:劉永鑫 中國科學院遺傳與發育生物學研究所
  • R語言繪圖 | 使用pheatmap快速繪製熱圖
    熱圖是我們展示數據時常用的圖形,今天小編教大家使用"pheatmap" 快速繪製熱圖
  • 終於來了,教你利用Pheatmap輕鬆繪製熱圖
    生信分析,怎麼能少得了熱圖,作為入門必備的一個技能,今天小編帶你用Pheatmap輕鬆get這一技能,下面跟著我一起學習起來吧。首先加載pheatmap包;沒有pheatmap包要先安裝pheatmap包;>install.packages("pheatmap")   #安裝包>library("pheatmap") #加載包>help(pheatmap)    #查看參數信息pheatmap有很多的參數,這些參數足以滿足我們對熱圖所需要的調整
  • 實用技巧—如何製作全年日曆熱圖,一張圖讀懂股指變化!
    Kevin Taylor【Tableau 銷售顧問,他對數據可視化和可視化的最佳實踐有著巨大的熱情】了解更多 Tableau 最新功能及應用技巧,歡迎登陸 Tableau 商業智能博客:https://www.tableau.com/about/blog  (複製連結至瀏覽器可查看更多信息)日曆熱圖
  • 漲知識,熱交換器原理動圖大全
    ,都表示熱交換器。下面就讓小編帶大家一起看看各種換熱器結構原理的動態圖吧!1.金屬材料消耗大,成本比普通換熱器高20%左右。2.>缺點:對焊接質量要求高,檢修困難,重量大,剛性差,運輸安裝難度大;8.具有補償圈的換熱器流體為高溫換熱時,管殼程熱應力較大,補強圈(或膨脹節)可消除該熱應力,外殼和管線不同時,補償圈發生彈性形變、拉伸或壓縮,以適應外殼和管不同的熱膨脹程度
  • 樹圖和熱圖合起來畫
    樹圖和熱圖合起來#第三個圖是樹形圖加熱圖 ######rm(list=ls())df1<-read.csv("003-