高顏值火山圖繪制腳本

分析背景

????火山圖常用于轉(zhuǎn)錄組研究中艇拍,也能應(yīng)用于基因組狐蜕,蛋白質(zhì)組,代謝組等統(tǒng)計(jì)數(shù)據(jù)卸夕。它歸根到底是是散點(diǎn)圖的一種馏鹤,它能將統(tǒng)計(jì)學(xué)中的統(tǒng)計(jì)顯著性量度(如p value,矯正后的P值)和變化幅度相結(jié)合娇哆,從而能夠幫助人們識(shí)別那些變化幅度較大且具有統(tǒng)計(jì)學(xué)意義的數(shù)據(jù)(如基因,蛋白等)勃救,如下圖所示碍讨。


圖1
圖形分解
  • 圖中每一點(diǎn)代表所研究的基因,灰色的點(diǎn)代表這些基因在實(shí)驗(yàn)組和對(duì)照組的表達(dá)情況不具有差異性蒙秒,綠色和紅色的點(diǎn)代表上調(diào)基因和下調(diào)基因勃黍。
  • 橫坐標(biāo)log2FC代表差異倍數(shù),離坐標(biāo)原點(diǎn)越遠(yuǎn)晕讲,說(shuō)明差異倍數(shù)越大
  • 縱坐標(biāo)-log10(PValue)代表差異結(jié)果的顯著性覆获,越往上的點(diǎn),說(shuō)明差異結(jié)果越顯著瓢省。
  • 圖1B與圖1A向比較弄息,圖1B將實(shí)驗(yàn)組和對(duì)照組中差異倍數(shù)最大的前二十個(gè)基因的名稱在圖中展示出來(lái),包括十個(gè)上調(diào)基因和十個(gè)下調(diào)基因勤婚,當(dāng)然在后面小編將教小伙伴們?nèi)绾螌⒏信d趣的基因(如:抑癌基因摹量,管家基因,促癌基因)展示在圖上中馒胆。
函數(shù)式編程的優(yōu)勢(shì)
  • 與零碎的代碼相比缨称,反復(fù)調(diào)用,參數(shù)簡(jiǎn)單易學(xué)祝迂,對(duì)初學(xué)者更加友好睦尽。
  • 與網(wǎng)頁(yè)繪圖小工具相比,不要要注冊(cè)型雳,不需要付費(fèi)当凡,方面經(jīng)濟(jì)。
  • 對(duì)有經(jīng)驗(yàn)的程序員纠俭,函數(shù)式編程能夠提高程序員的編程水平宁玫,減少代碼的重復(fù)使用,高效快捷
敲黑板柑晒,劃重點(diǎn)

????小編今天把小伙伴們轉(zhuǎn)錄組分析常用的火山圖封閉成函數(shù)欧瘪,并使用ggplot2,小伙伴們拿到函數(shù)以后匙赞,只需要將數(shù)據(jù)整理成固定的格式佛掖,代入函數(shù)中妖碉,即可繪制成高質(zhì)量,高顏值的火山圖芥被,用AI小修一下欧宜,即可插入到自己的文章中。

分析方法
# 安裝R包
if (!requireNamespace("ggplot2", quietly = TRUE))
  install.packages("ggplot2",repos = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/")
if (!requireNamespace("RColorBrewer", quietly = TRUE))
  install.packages("RColorBrewer",repos = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/")
if (!requireNamespace("data.table", quietly = TRUE))
  install.packages("data.table",repos = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/")
# 自定義函數(shù)
## 快速讀入數(shù)據(jù)
readFlie=function(input,type,row=T,header=T){
  # input 為讀入文件的路徑拴魄,type為讀入文件的類型冗茸,格式為‘.txt’或‘.csv’,row=T,將文件的第一列設(shè)置為列名
  library(data.table,quietly = TRUE)
  if(type=='txt'){
    dat = fread(input,header = header,sep='\t',stringsAsFactors = F,check.names = F)
    if(row){
      dat = as.data.frame(dat,stringsAsFactors = F)
      rownames(dat) = dat[,1]
      dat = dat[,-1]
    }else{
      dat = as.data.frame(dat,stringsAsFactors = F)
    }
  }else{
    dat = fread(input,header = header,sep=',',stringsAsFactors = F,check.names = F)
    if(row){
      dat = as.data.frame(dat,stringsAsFactors = F)
      rownames(dat) = dat[,1]
      dat = dat[,-1]
    }else{
      dat = as.data.frame(dat,stringsAsFactors = F)
    }
  }
  return(dat)
}
# 保存圖片
savePlots=function(path,plot,type=c('pdf','png','tiff')[1],width=10,height=8,dpi=300){
  # path表示保存圖片路徑,需要加上相應(yīng)的文件擴(kuò)展名稱
  library(ggplot2)
  if(type=='pdf'){
    ggsave(filename = path,plot = plot,width = width,height = height,device = 'pdf')
  }else if(type=='png'){
    ggsave(filename = path,plot = plot,width = width,height = height,device = 'png',dpi = dpi)
  }else{
    ggsave(filename = path,plot = plot,width = width,height = height,device = 'tiff',dpi = dpi)
  }
}
實(shí)戰(zhàn)演練


掃描關(guān)注微信公眾號(hào),后臺(tái)回復(fù)火山圖匹中,獲取源代碼和測(cè)試數(shù)據(jù)

# 讀入數(shù)據(jù)
df = readFlie('./DEGs_result.txt',type = 'txt')
# 繪圖
fg=wn_volcano(Symbol = rownames(df),logFC=df$logFC,Pvalue=df$FDR)
# 展示圖片
fg
# 保存圖片
savePlots(path = './fg.pdf',plot = fg,type = 'pdf',width = 10,height = 8)
savePlots(path = './fg.png',plot = fg,type = 'png',width = 10,height = 8,dpi = 300)
savePlots(path = './fg.tiff',plot = fg,type = 'tiff',width = 10,height = 8,dpi = 600)
高級(jí)繪圖

圖2

????在圖1B中夏漱,小編給大家提了一下能在火山圖中展示自己感興趣的基因,說(shuō)到這里顶捷,小伙伴們一定猜到了挂绰,小編肯定把這個(gè)函數(shù)寫(xiě)好了。小伙伴們只需要給函數(shù)傳入特定的基因名稱服赎,火山圖中就可以展示這個(gè)基因葵蒂,繪制出來(lái)的圖形如圖2A和圖2B所示:圖2A是函數(shù)默認(rèn)展示的是差異倍數(shù)最大的前二十個(gè)基因,包括十個(gè)上調(diào)基因和十個(gè)下調(diào)基因重虑;圖2B是小編想展示P值最小前十個(gè)基因践付。閱讀原文,獲取高級(jí)火山圖繪制源代碼缺厉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末荔仁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子芽死,更是在濱河造成了極大的恐慌乏梁,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件关贵,死亡現(xiàn)場(chǎng)離奇詭異遇骑,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)揖曾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)落萎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人炭剪,你說(shuō)我怎么就攤上這事练链。” “怎么了奴拦?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵媒鼓,是天一觀的道長(zhǎng)侥加。 經(jīng)常有香客問(wèn)我艳狐,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任宙搬,我火速辦了婚禮吱型,結(jié)果婚禮上存筏,老公的妹妹穿的比我還像新娘碍岔。我一直安慰自己,他們只是感情好擎厢,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布究流。 她就那樣靜靜地躺著,像睡著了一般动遭。 火紅的嫁衣襯著肌膚如雪芬探。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,115評(píng)論 1 296
  • 那天沽损,我揣著相機(jī)與錄音,去河邊找鬼循头。 笑死绵估,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的卡骂。 我是一名探鬼主播国裳,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼全跨!你這毒婦竟也來(lái)了缝左?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤浓若,失蹤者是張志新(化名)和其女友劉穎渺杉,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體挪钓,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡是越,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了碌上。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倚评。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖馏予,靈堂內(nèi)的尸體忽然破棺而出天梧,到底是詐尸還是另有隱情,我是刑警寧澤霞丧,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布呢岗,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏敷燎。R本人自食惡果不足惜暂筝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望硬贯。 院中可真熱鬧焕襟,春花似錦、人聲如沸饭豹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拄衰。三九已至它褪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間翘悉,已是汗流浹背茫打。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留妖混,地道東北人老赤。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像制市,于是被迫代替她去往敵國(guó)和親抬旺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353