R語言學(xué)習(xí)之火山圖的繪制詳解
火山圖
火山圖用于展示基因表達(dá)差異的分布,橫軸為Log2 Fold Change
,越偏離中心差異倍數(shù)越大;縱軸為(-1)*Log10 P_adjust
,值越大差異越顯著。一般橫軸越偏離中心的點其縱軸值也會比較大,因此呈現(xiàn)火山噴發(fā)的形狀。
一步繪制火山圖
輸入數(shù)據(jù)格式
火山圖需要的數(shù)據(jù)格式如下 (本文用到的數(shù)據(jù)文件名為volcano.txt
,文末有下載鏈接,此處截取一部分作為例子,也可用來畫圖,只是數(shù)據(jù)少,效果不明顯)
- id: 不是必須的,但一般的軟件輸出結(jié)果中都會包含,表示基因名字。
- log2FoldChange: 差異倍數(shù)的對數(shù),一般的差異分析輸出結(jié)果中也會給出對數(shù)處理的值, 因此程序沒有提供這一步的計算操作。
- padj: 多重假設(shè)檢驗矯正過的差異顯著性P值;一般的差異分析輸出結(jié)果為原始值,程序提供一個參數(shù)對其求取負(fù)對數(shù)。
- significant: 可選列,標(biāo)記哪些基因是上調(diào)、下調(diào)、無差異;若無此列或未在參數(shù)中指定此列,默認(rèn)程序會根據(jù)
padj
列和log2FoldChange
列根據(jù)給定的閾值自動計算差異基因,并作出不同顏色的標(biāo)記。 - label: 可選列,一般用于在圖中標(biāo)記出感興趣的基因的名字。非
-
行的字符串都會標(biāo)記在圖上。
id log2FoldChange padj significant label E00007 4.28238 0 EHBIO_UP A E00008 -1.1036 0.476466843393901 Unchanged - E00009 -0.274368 1 Unchanged - E00010 4.62347 7.37606076333335e-103 EHBIO_UP - E00012 0.973987 0.482982440163204 Unchanged - E00017 -1.30205 0.000555693857439792 Baodian_UP B E00024 0.617636 2.78047837287061e-13 Unchanged - E00033 1.48669 2.56000581595275e-60 EHBIO_UP - E00034 -0.783716 0.00341521725291801 Unchanged - E00036 2.01592 6.03136656016401e-06 EHBIO_UP C E00040 -1.89657 4.73663890849056e-21 Baodian_UP - E00041 -0.268168 0.563429434558031 Unchanged - E00042 0.0861048 0.367700939634328 Unchanged - E00043 -1.19328 1.42673872027352e-153 Baodian_UP - E00044 -0.887981 2.43067804654905e-26 Unchanged - E00047 -0.610941 5.51696648645932e-57 Unchanged -
使用significant列繪制火山圖
# -f: 指定輸入文件,格式如上 # -x: 指定橫軸變量,值為輸入文件中與取過對數(shù)的變化倍數(shù)相關(guān)的列的名字 # -y: 指定縱軸變量,值為輸入文件中與P-value # (也可能是p-adj,是否取過對數(shù)都可以)相關(guān)的列的名字 # -P: 若為TRUE,則表示對<-y>指定的列進(jìn)行-log10轉(zhuǎn)換 # -L: 指定圖例的位置 # -s: 指定差異基因列 # -S: 指定差異基因列不同的標(biāo)簽出現(xiàn)的順序 sp_volcano.sh -f volcano.txt -x log2FoldChange -y padj -s significant -S "'EHBIO_UP', 'Baodian_UP', 'Unchanged'" -P TRUE -L top
這個圖看上去還可以,沒有太大的問題。但有部分點與最頂端的線重合了,這些點的pvalue為0,取負(fù)對數(shù)后為負(fù)無窮。另外在一些情況下,會存在部分基因的pvalue極小,使得整張圖呈現(xiàn)一個壓縮的趨勢,大部分點偏安于圖的下方,中間大段空白,最上面零星幾個點。為了避免這種情況,程序設(shè)置了參數(shù)-M
用于設(shè)定pvalue的最大的負(fù)對數(shù),所有大于給定值的數(shù),都會視為給定值。
# -M 10: 指定P-value(也可能是p-adj);若小于10^(-10),則為10^(-10) # 用于部分p-value存在異常值,導(dǎo)致整個圖都被壓縮在最底部 p_volcano.sh -f volcano.txt -x log2FoldChange -y padj -s significant -S "'EHBIO_UP', 'Baodian_UP', 'Unchanged'" -P TRUE -L top -M 10
注意看縱軸的變化,和最上面排成一條線的一堆點。
自動計算significant列繪制火山圖
若不存在significant
列,程序會根據(jù)-F
指定的參數(shù)計算并標(biāo)記差異基因。-F
的默認(rèn)值為"0.05,1"
(引號是必須的), 第一個數(shù)表示pvalue或padj,對應(yīng)于<-y>列;第二個數(shù)表示對數(shù)轉(zhuǎn)換的差異倍數(shù),對應(yīng)于<-x>列。
# <-F "0.05,1">, 默認(rèn)值,故命令行中未寫,引號是必須的 sp_volcano.sh -f volcano.txt -x log2FoldChange -y padj -P TRUE -L top
# -M 10: 與之前相同 sp_volcano.sh -f volcano.txt -x log2FoldChange -y padj -P TRUE -L top -M 10
火山圖中標(biāo)記基因的名字
# -l: label,在圖中標(biāo)記部分基因的名字; # label為含有待標(biāo)記基因名字的列名,此列中非<->的非空字符都會視為基因名字 sp_volcano.sh -f volcano.txt -x log2FoldChange -y padj -P TRUE -L top -M 10 -l label
label
列中非-
的值都會標(biāo)記在圖上。
今天先到這,前天提到的富集分析圖,今天的火山圖都是散點圖的一種,后續(xù)介紹散點圖時再對用到的R代碼進(jìn)行解讀。需要繪圖腳本的,還是請幫助轉(zhuǎn)發(fā)下,謝謝。
數(shù)據(jù)文件鏈接 https://pan.baidu.com/s/1I3hi8Lr9IxTgNFJoN4zbag . 提取碼:1234
到此這篇關(guān)于R語言學(xué)習(xí)之火山圖的繪制詳解的文章就介紹到這了,更多相關(guān)R語言繪制火山圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
R語言繪圖學(xué)習(xí)教程VennDiagram繪制venn
這篇文章主要為大家介紹了R語言繪圖學(xué)習(xí)教程VennDiagram繪制venn的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06R語言導(dǎo)入導(dǎo)出數(shù)據(jù)的幾種方法匯總
這篇文章主要給大家總結(jié)介紹了R語言導(dǎo)入導(dǎo)出數(shù)據(jù)的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03