cell.jpg
跟著CELL學作圖|1.火山圖
“實踐是檢驗真理的唯一標準。”
“復現是學習R語言的最好辦法。”
2021.4.12_1
這篇2020年發表在cell
上關于新冠的組學文章里面有大量的生信內容。今天帶大家復現其中的一個Supplemental Figure
:火山圖。
22
本文代碼及示例數據領取:后臺回復“210412”
2021.4.12_2
這圖確實比一般的火山圖美觀且簡潔。
火山圖的意義
火山圖可用于展示兩組樣本間基因表達水平差異的分布狀況。
橫軸log2 fold change
差異表達倍數(Fold Change值,簡稱FC),差異越大的基因分布X軸在兩端。
縱坐標用-log10 p-value
表示,對P值進行-log10的轉化。轉化后,值越大就表示差異越顯著。
數據格式
2021.4.12_3
繪制
setwd(".../data")#設置目標路徑,自己修改library(RColorBrewer)#配色用
df <- read.csv("df.csv",row.names = 1) #導入數據,第一列作為行名
fd <- 0.25 #設置foldchange閾值
cut.fd <- 0.25
pvalue <- 0.05 #設置p閾值
pdf( "df_volcano.pdf") #打開畫板
plot(df$fd, -log10(df$P_value_adjust), col="#00000033", pch=19,
xlab=paste("log2 (fold change)"),
ylab="-log10 (P_value_adjust)")
#篩選上下調
up <- subset(df, df$P_value_adjust < pvalue & df$fd > cut.fd)
down <- subset(df, df$P_value_adjust< pvalue & df$fd< as.numeric(cut.fd*(-1)))
#繪制上下調
points(up$fd, -log10(up$P_value_adjust), col=1, bg = brewer.pal(9, "YlOrRd")[6], pch=21, cex=1.5)
points(down$fd, -log10(down$P_value_adjust), col = 1, bg = brewer.pal(11,"RdBu")[9], pch = 21,cex=1.5)
#加上線p、fd閾值線
abline(h=-log10(pvalue),v=c(-1*fd,fd),lty=2,lwd=1)
dev.off()#關閉
注:也可以用ggplot來繪制。
2021.4.12_4
大功告成!
往期內容: