火山圖


分析背景

火山圖常用於轉錄組研究中,也能應用於基因組,蛋白質組,代謝組等統計數據。它歸根到底是是散點圖的一種,它能將統計學中的統計顯著性量度(如p value,矯正后的P值)和變化幅度相結合,從而能夠幫助人們識別那些變化幅度較大且具有統計學意義的數據(如基因,蛋白等),如下圖所示。 圖1

圖形分解
  • 圖中每一點代表所研究的基因,灰色的點代表這些基因在實驗組和對照組的表達情況不具有差異性,綠色和紅色的點代表上調基因和下調基因。

  • 橫坐標log2FC代表差異倍數,離坐標原點越遠,說明差異倍數越大

  • 縱坐標-log10(PValue)代表差異結果的顯著性,越往上的點,說明差異結果越顯著。

  • 圖1B與圖1A向比較,圖1B將實驗組和對照組中差異倍數最大的前二十個基因的名稱在圖中展示出來,包括十個上調基因和十個下調基因,當然在后面小編將教小伙伴們如何將感興趣的基因(如:抑癌基因,管家基因,促癌基因)展示在圖上中。

函數式編程的優勢
  • 與零碎的代碼相比,反復調用,參數簡單易學,對初學者更加友好。

  • 與網頁繪圖小工具相比,不要要注冊,不需要付費,方面經濟。

  • 對有經驗的程序員,函數式編程能夠提高程序員的編程水平,減少代碼的重復使用,高效快捷

敲黑板,划重點

小編今天把小伙伴們轉錄組分析常用的火山圖封閉成函數,並使用ggplot2,小伙伴們拿到函數以后,只需要將數據整理成固定的格式,代入函數中,即可繪制成高質量,高顏值的火山圖,用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/")
# 自定義函數
## 快速讀入數據
readFlie=function(input,type,row=T,header=T){
  # input 為讀入文件的路徑,type為讀入文件的類型,格式為‘.txt’或‘.csv’,row=T,將文件的第一列設置為列名
  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表示保存圖片路徑,需要加上相應的文件擴展名稱
  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)
  }
}

  

實戰演練

掃描關注微信公眾號,后台回復火山圖,獲取源代碼和測試數據

# 讀入數據
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)

  

高級繪圖

圖2 在圖1B中,小編給大家提了一下能在火山圖中展示自己感興趣的基因,說到這里,小伙伴們一定猜到了,小編肯定把這個函數寫好了。小伙伴們只需要給函數傳入特定的基因名稱,火山圖中就可以展示這個基因,繪制出來的圖形如圖2A和圖2B所示:圖2A是函數默認展示的是差異倍數最大的前二十個基因,包括十個上調基因和十個下調基因;圖2B是小編想展示P值最小前十個基因。閱讀原文,獲取高級火山圖繪制源代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM