雙線火山圖(Dual-line volcano plot)
是一種用于可視化差異表達分析結(jié)果的圖表。它通常用于展示基因或蛋白質(zhì)在兩個或多個條件之間的表達差異,并結(jié)合統(tǒng)計學(xué)檢驗的結(jié)果。
雙線火山圖的橫軸表示差異表達的水平,通常是通過計算統(tǒng)計學(xué)上的指標(如t-檢驗、ANOVA等)得到的p值或調(diào)整后的p值(如FDR、Bonferroni等)。縱軸表示表達量的對數(shù)變換,常使用基于2的對數(shù)(log2)。
在雙線火山圖中,每個數(shù)據(jù)點代表一個基因或蛋白質(zhì),它的橫坐標位置反映了它的差異表達水平的顯著性程度,縱坐標位置則反映了它的表達量的相對變化大小。通常,顯著性水平較低(較小的p值)的點會在圖上較遠離0點,表示其差異表達更顯著;而縱坐標較高(較大的對數(shù)變換值)的點表示其表達量的變化較大。
雙線火山圖的主要特點是將差異表達的統(tǒng)計顯著性和生物學(xué)上的重要性結(jié)合在一起,幫助研究人員在大量差異表達基因中篩選出具有生物學(xué)意義的目標。通過設(shè)定合適的差異表達閾值和顯著性水平,可以在圖中直觀地識別出顯著差異表達的基因或蛋白質(zhì),進一步進行功能注釋和生物通路分析等。
雙線火山圖在生物醫(yī)學(xué)研究中被廣泛應(yīng)用,特別是在基因組學(xué)、轉(zhuǎn)錄組學(xué)和蛋白質(zhì)組學(xué)等研究領(lǐng)域。它提供了一種直觀和簡潔的方式來可視化差異表達分析結(jié)果,幫助研究人員快速發(fā)現(xiàn)和理解基因或蛋白質(zhì)的差異表達模式。
結(jié)果圖
rm(list = ls())
setwd("D:")
library(RColorBrewer)
library(ggplot2)
# 生成雙曲線所需數(shù)據(jù)
## 設(shè)置foldchange,pvalue閾值
log2fd = 0.25
p = 0.05
fun <- function(a){
input = seq(0.0001,a,0.0001)
y = 1/(input) + (-log10(p))
df1 = data.frame(x = input+log2fd,y = y)
df2 = data.frame(x = -(input+log2fd),y = y)
res <- rbind(df1,df2)
return(res)
}
df_line <-fun(3)
head(df_line)
## 數(shù)據(jù)準備
df <- read.csv("df.csv",row.names = 1)
#確定是上調(diào)還是下調(diào),用于給圖中點上色
## 新增一列x對應(yīng)曲線上的值
## 反函數(shù)左加右減 上加下減
df$line = ifelse(df$log2fd>0, (1/(df$log2fd-log2fd)) + (-log10(p)), (1/(-df$log2fd-log2fd)) + (-log10(p)))
##確定是上調(diào)還是下調(diào),用于給圖中點上色
df$threshold = factor(ifelse(-log10(df$P_value) > df$line & abs(df$log2fd) >= 0.25, ifelse(df$log2fd >= 0.25 ,'Up','Down'),'NoSignifi'),levels=c('Up','Down','NoSignifi'))
df$gene <- row.names(df) #添加一列基因名,以便備注
library(ggrepel) #標簽用
ggplot()+
geom_point(aes(x=log2fd,y= -log10(P_value), color=threshold),df)+
scale_color_manual(values=c("#FC4E2A","#4393C3","#00000033"))+
geom_line(aes(x=x,y=y),df_line)+
ylim(0,10)+
xlim(-2.5,+2.5)+
theme_classic()
數(shù)據(jù)格式