隨著各種測序技術的不斷發展,目前,測序已然成為生物學開拓新發現的主要手段。而對於測序實驗結果的圖形也是至關重要的。一方面,圖形的展示可以直觀的窺見實驗結果,方便人們閱讀和理解來獲取關鍵的研究內容。另一方面,「高顏值」的圖形總是能夠吸引和提起工作者的閱讀興趣。
熱圖,是一種不可或缺的展現晶片和測序結果的方式,這種圖在文章中非常常見,不論是高影響因子還是低影響因子的文章,都會選擇用熱圖作為一種結果展現方法。現如今,做熱圖的工具也越來越多,例如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