【科研貓·繪圖】朋友圈最火熱的「火山圖」(帶R程式碼分享)

  • 2019 年 10 月 6 日
  • 筆記

暑假到了,在這個火熱的夏日,還有比一張美麗的文章主圖更能讓我們充滿激情和力量嗎?在這組學撐起生物資訊學半邊天的時代,火山圖,在轉錄組、蛋白組、代謝組等多種組學數據中,都佔有舉足輕重的地位。

那麼,什麼是火山圖(Volcano Plot)。正如名稱所描述,火山圖的圖形非常像火山噴發的形狀。火山圖通常用來展示差異表達的基因,常常出現在晶片、轉錄組、蛋白組、代謝組等組學檢測技術的結果中,並且通常伴隨熱圖一起出現。

火山圖是散點圖的一種展現形式。以實驗組和對照組轉錄組數據為例,一張完美的火山圖,通常由幾個部分組成,顯著上調差異表達基因,顯著下調差異表達基因。一般來說,x軸為實驗組基因表達量比上對照組基因表達量的倍數差異,而y軸則為實驗組比對照組之後的p值或者校正後的p值。火山圖上,一個點代表一個基因,而顏色則代表他們是顯著上調還是顯著下調。

好了,基礎知識就介紹到這裡,下面讓我們來看如何繪製一張完美的火山圖。

首先,讓我們先看一下數據。我們的數據使用的是RNAseq表達譜計算出來的差異基因,差異基因的計算方法為limma。在RNAseq分析中,使用較多的計算差異基因的軟體為DESeq2和limma。差異分析結果文件我們存儲在DEGdata.txt文件中,使用excel打開改文件,一共有7列數據:第一列Symbol為基因名;第二列logFC為實驗組比上對照組的倍數差異,其中大於0為實驗組上調基因,小於0為實驗組下調基因;第三列AveExpr為該基因在所有樣本中表達量均值;第四列t為t統計量;第五列P.value為實驗組比對照組的P值;第六列adj.p.value為校正後的P值,因為基因和基因並不是相互獨立的,所以我們需要對P值進行校正來降低結果的假陽性,常用的校正方法為FDR校正;第七列B為B統計量。

然後,讓我們打開Rstudio,開始安裝一些必須的包,這裡推薦一款ggplot2一鍵繪圖神器,ggpubr (http://www.sthda.com/english/articles/24-ggpubr-publication-ready-plots/)。這個包是在ggplot2的基礎上,整合了很多繪圖函數,對用戶十分友好。另外需要用到的一個包圍ggthemes,這個包整合了很多ggplot2的繪圖主題,對科研人員十分友好。

在包安裝完成之後,我們將它們載入到R環境中。接下來就是讀取我們差異基因的文件了。差異基因文件我們存儲在DEGdata.txt文件中。

在R中查看文件前6行。

這7列文件之前已經介紹過,我們畫火山圖,只需要其中的logFC和adj.P.val就可以了。在繪圖之前,我們需要對adj.P.val進行轉換,將它的值變成-1 * log10,這樣的話可以拉開差異表達基因之間的間距。

接下來就是繪製火山圖了~ 程式碼如下:

畫出來的火山圖是這樣色兒的:

當然,直接這麼畫火山圖,結果是非常丑的。編輯們看到了,估計會直接拒稿吧(╥╯^╰╥),所以我們需要對它進行美化~

首先需要區分其中哪些是顯著差異表達基因。因此,我們需要對logFC和adj.P.val兩列進行過濾。在本文中,我們設置的過濾的條件為,adj.P.val小於0.05並且logFC大於2(4倍差異)為顯著上調差異表達基因,adj.P.val小於0.05並且logFC小於-2(4倍差異)為顯著下調差異表達基因。大家可以根據實驗結果,適當調整logFC。

然後我們使用添加了上調和下調基因的數據重新繪製火山圖。在ggpubr中,使用color參數,可以指定點的顏色。程式碼和畫出來的圖就是這樣的啦:

這個版本的火山圖是不是比之前好看很多呢~

當然,對於小飛老師的超高繪圖水平,這張圖還遠遠達不到發表的標準,所以我們需要在上面做更多的修飾。比如修改點的大小size和更改差異表達基因的顏色palette。

這樣,一張基本熱圖就繪製完成了~

當然,還有很多小夥伴比對了參考的文獻,發現這張圖還是太丑,還遠遠達不到高分雜誌對圖片的苛刻要求。因此,我們在這張圖上做了進一步調整。在ggplot2中,可以使用geom_hline和geom_vline分別添加橫向和縱向的輔助線。

這樣的一張熱圖,已經可以滿足絕大多數雜誌的要求啦~

當然,一張火山圖還是遠遠不夠的,同學們在給老闆講ppt的時候,常常會面臨老闆們指著圖上其中一個點,問這是什麼基因?為了避免這樣尷尬,我們為大家提供了一個進階版的火山圖。為數據增加新的一列Label,將上調和下調差異表達前十的基因繪製在火山圖中。

你以為到這裡就結束了,可能很多同學覺得這個火山圖經過我們反反覆復的優化修改已經非常完美了。可是對於我們追求極致的飛飛老師來說,這還是不夠的!接下來,我們進一步修改了點的顏色,我們這裡用的顏色,可是Cell雜誌御用顏色呢~接下來,就是見證奇蹟的時刻啦~

這樣,一張完美的火山圖順利誕生啦~(可謂歷盡千辛萬苦啊)

本期乾貨

·

!!繪製火山圖程式碼!!

關注「科研貓」公眾號

以上內容均為「科研貓」公眾號原創,嚴禁未經許可擅自轉載及資源分享,如需轉載,請申請獲得許可。