ggplot2-plotly|讓你的火山圖“活”過來

火山圖(Volcano Plot)常用于展示基因表達(dá)差異的分布,橫坐標(biāo)常為Fold change(倍數(shù)),越偏離中心差異倍數(shù)越大;縱坐標(biāo)為P value(P值),值越大差異越顯著。得名原因也許是因?yàn)?/span>結(jié)果圖像火山吧


一 載入R函數(shù)包及數(shù)據(jù)集

library(ggplot2)data <- read.csv("火山圖.csv",header=TRUE,row.names = 1)
head(data) #查看數(shù)據(jù)類型,主要有P值,F(xiàn)old change和基因ID即可。


二 ggplot2繪制火山圖

2.1 繪制簡單的火山圖--點(diǎn)圖

ggplot(data = data, aes(x = logFC, y = -log10(adj.P.Val))) +geom_point(alpha=0.8, size = 1)


和文獻(xiàn)中的差距較大,以下幾個(gè)方面可改進(jìn):

A:上下調(diào)基因的區(qū)分;

B:橫軸,縱軸的閾值線;

C:重點(diǎn)基因的標(biāo)示。


2.2 細(xì)節(jié)優(yōu)化火山圖

1)根據(jù)閾值設(shè)定上下調(diào)基因

新增change列,利用ifelse函數(shù)添加基因的上下調(diào)情況,color進(jìn)行區(qū)分,然后使用geom_hline() ?和 geom_vline( )參數(shù)添加閾值線,

data$change <- as.factor(ifelse(data$adj.P.Val < 0.01 & abs(data$logFC) > 1,ifelse(data$logFC > 1,'UP','DOWN'),'NOT'))


2)添加閾值線

使用geom_hline() ?和 geom_vline( )參數(shù)添加閾值線


ggplot(data = data, aes(x = logFC, y = -log10(adj.P.Val), color = change)) +  geom_point(alpha=0.8, size = 1) +  theme_bw(base_size = 15) +??theme(panel.grid.minor?=?element_blank(),panel.grid.major?=?element_blank())?+  geom_hline(yintercept=2 ,linetype=4) +geom_vline(xintercept=c(-1,1) ,linetype=4 ) +  scale_color_manual(name = "", values = c("red", "green", "black"), limits = c("UP", "DOWN", "NOT"))  


3) 標(biāo)示重點(diǎn)顯著差異基因

上圖是不是有點(diǎn)像了,新增sign列,利用ifelse函數(shù)添加重點(diǎn)顯著差異基因,然后使用geom_text參數(shù)添加到圖上,

data$sign <- ifelse(data$adj.P.Val < 0.001 & abs(data$logFC) > 2.5,rownames(data),NA)
ggplot(data = data, aes(x = logFC, y = -log10(adj.P.Val), color = change)) +  geom_point(alpha=0.8, size = 1) +  theme_bw(base_size = 15) +??theme(panel.grid.minor?=?element_blank(),panel.grid.major?=?element_blank())?+  geom_hline(yintercept=2 ,linetype=4) +geom_vline(xintercept=c(-1,1) ,linetype=4 ) +  scale_color_manual(name = "", values = c("red", "green", "black"), limits = c("UP", "DOWN", "NOT")) +geom_text(aes(label = sign), size = 3) 

?


4) 解決基因名重疊問題

基本和paper一致,但是因?yàn)椴町惐磉_(dá)基因太多,存在重疊情況,現(xiàn)使用R語言的ggrepel包解決標(biāo)簽太多導(dǎo)致的重疊問題。

library(ggrepel)ggplot(data = data, aes(x = logFC, y = -log10(adj.P.Val), color = change)) +  geom_point(alpha=0.8, size = 1) +  theme_bw(base_size = 15) +??theme(panel.grid.minor?=?element_blank(),panel.grid.major?=?element_blank())?+  scale_color_manual(name = "", values = c("red", "green", "black"), limits = c("UP", "DOWN", "NOT")) +??geom_label_repel(aes(label=sign),?fontface="bold",?color="grey50",?box.padding=unit(0.35,?"lines"),?point.padding=unit(0.5,?"lines"),?segment.colour?=?"grey50")




5) 標(biāo)示感興趣的基因的表達(dá)情況

將我們感興趣的基因添加到數(shù)據(jù)的LABEL列中,假設(shè)以下幾個(gè)基因是我們重點(diǎn)關(guān)注的基因,單獨(dú)查看以下基因的表達(dá)情況

ggplot(data = data, aes(x = logFC, y = -log10(adj.P.Val), color = change)) +  geom_point(alpha=0.8, size = 1) +  theme_bw(base_size = 15) +  theme(panel.grid.minor = element_blank(),panel.grid.major = element_blank() ) +  scale_color_manual(name = "", values = c("red", "green", "black"), limits = c("UP", "DOWN", "NOT")) +  geom_label_repel(aes(label=LABEL), fontface="bold", color="grey50", box.padding=unit(0.35, "lines"), point.padding=unit(0.5, "lines"), segment.colour = "grey50")


吶,到這里除了數(shù)據(jù)不一樣,基本實(shí)現(xiàn)了文獻(xiàn)中的火山圖,是不是以為到這就結(jié)束了?NO!NO!NO! 實(shí)現(xiàn)上述靜態(tài)的就可以發(fā)paper去了!

但是,,,

匯報(bào)展示的時(shí)候,如果能動(dòng)態(tài)交互式的展示所有顯著基因的FC值和P值,是不是更酷炫!


plotly繪制交互式火山圖

1)plot_ly函數(shù)畫散點(diǎn)圖

library(plotly)plot_ly(data,x = ~logFC, y = ~-log10(adj.P.Val),text = ~sign, type = 'scatter',  mode = 'markers')


會(huì)彈出一個(gè)網(wǎng)頁,然后可以交互式的展示每個(gè)點(diǎn)的FC值和P值。


那可不可以在“paper”級(jí)靜態(tài)火山圖的基礎(chǔ)上,實(shí)現(xiàn)交互式呢?當(dāng)然可以!??!

四,參考資料

https://www.bioconductor.org/packages/release/bioc/vignettes/EnhancedVolcano/inst/doc/EnhancedVolcano.html

R|plotly



更多關(guān)于生信 ,R ,Python的內(nèi)容請掃碼關(guān)注小號(hào),謝謝。

其他可能感興趣


R|繪圖邊距及布局


R-基本繪圖參數(shù)(Ⅰ)

ggplot2|從0開始繪制直方圖


ggplot2|從0開始繪制折線圖


ggplot2|從0開始繪制箱線圖


ggplot2|繪制GO富集柱形圖


ggplot2| 繪制KEGG氣泡圖

ggplot2|擴(kuò)展包從0開始繪制雷達(dá)圖

繪圖系列|R-corrplot相關(guān)圖


繪圖系列|R-wordcloud2包繪制詞云


繪圖系列|R-VennDiagram包繪制韋恩圖


R|UpSet-集合可視化


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容