火山圖 火山圖(volcano plot)常用于顯著差異基因表達(dá)的展示,包含顯著和差異兩個(gè)重要信息。顯著性指P值小于0.05,差異性常用FoldChange值>=2作為篩選標(biāo)準(zhǔn)。 那么如何看懂一張火山圖所包含的信息呢?首先需要知道,火山圖的橫坐標(biāo)通常用log2(fold change)表示,差異越大的基因分布在兩端,縱坐標(biāo)用-log10(pvalue)表示,T檢驗(yàn)顯著性P值的負(fù)對數(shù)。由于P值越小表示越顯著,所以我們進(jìn)行-log10(P value)轉(zhuǎn)化后,轉(zhuǎn)化值越大表示差異越顯著。通常差異倍數(shù)越大的基因T檢驗(yàn)越顯著,所以左上角和右上角的值往往是我們關(guān)注的。 求教要怎么畫火山圖呢? 小銳今天將為大家介紹如何用R語言繪制火山圖。 1.加載數(shù)據(jù) temp <- read.table("data.txt",header = T,check.names = F,quote="",sep = "t") head(temp) > 查看基因表達(dá)數(shù)據(jù),包含P值和倍數(shù)值,因火山圖展示需要,將倍數(shù)值進(jìn)行了Log2轉(zhuǎn)化。 2.繪制火山圖 2.1初級版火山圖 library("ggplot2") p<-ggplot(temp,aes(x=temp$log_foldchange,y=-log10(temp$p_value)))+xlab("log2 Fold Change")+ylab("-log10P-Value")+ geom_point(size=4,alpha=0.6) p 2.2進(jìn)階版火山圖 為方便直觀的顯示基因表達(dá)的上調(diào)與下調(diào),我們設(shè)置篩選閾值,并依此設(shè)置點(diǎn)的顏色。 這里我們設(shè)置P<0.05且log(foldchange)>0為上調(diào)(“up”),P<0.05且log(foldchange)<0為下調(diào)(“down”)。 temp$threshold[temp$p_value < 0.05 & temp$log_foldchange>0 ] = "up" temp$threshold[temp$p_value < 0.05 & temp$log_foldchange<0 ] = "down" temp$threshold[temp$p_value > 0.05 & (temp$log_foldchange>=0 | temp$log_foldchange <= 0)] = "non" p<-ggplot(temp,aes(x=temp$log_foldchange,y=-log10(temp$p_value),colour=threshold))+xlab("log2 Fold Change")+ylab("-log10P-Value")+ geom_point(size=4,alpha=0.6)+ scale_color_manual(values =c("#0072B5","grey","#BC3C28")) #設(shè)置點(diǎn)的顏色 p 這樣繪制出來的火山圖是不是更加直觀,更美觀了?最后讓我們來修飾細(xì)節(jié)。 2.3終極版火山圖 調(diào)整圖片細(xì)節(jié),為火山圖去除背景并增加區(qū)域線: library(ggthemes) p<-ggplot(temp,aes(x=temp$log_foldchange,y=-log10(temp$p_value),colour=threshold))+xlab("log2 Fold Change")+ylab("-log10P-Value")+ geom_point(size=4,alpha=0.6)+ scale_color_manual(values =c("#0072B5","grey","#BC3C28")) + geom_hline(aes(yintercept=-log10(0.05)),colour="grey",size=1.2 ,linetype=2) + #增加水平間隔線 geom_vline(aes(xintercept=0), colour="grey",size=1.2 ,linetype=2)+ #增加垂直間隔線 theme_few()+theme(legend.title = element_blank()) #去掉網(wǎng)格背景和圖注標(biāo)簽 p |
|