這種圖又稱cross-talk礼搁,當(dāng)這套數(shù)據(jù)集做完富集分析后,查看兩個(gè)通路里有哪些基因是重疊的目尖。
假設(shè)我們整理好這樣的矩陣馒吴,第一列是FC值,第二列是基因名瑟曲,第三列是基因所在的通路名饮戳,其中在兩個(gè)通路中都有的基因用intersect表示《床Γ基因的順序需要事先排一下:Hippo, intersect, Wnt扯罐。我懶得查函數(shù),直接用excel做了扣甲,故這部分代碼省略篮赢。
library(ggplot2)
library(ggrepel)
temp<-test[which(test$X=="intersect"),]
library(Cairo)
CairoJPEG("crosstalk.jpeg",width=7200,height=4800,res=1200)
ggplot(test)+geom_point(aes(x=test$Symbol,y=test$log2FoldChange.C2.C1.,colour=factor(test$X)),size=5)+
scale_x_discrete(limits=test$Symbol)+theme_bw()+theme(panel.grid = element_blank())+
ylab("Fold change")+
theme(axis.text.x=element_blank())+theme(axis.ticks.x = element_blank())+theme(axis.title.x = element_blank())+
geom_text_repel(aes(x=test$Symbol,y=test$log2FoldChange.C2.C1.,label=ifelse(test$X=="intersect",test$Symbol,"")),
colour="darkred",size=3,box.padding = unit(0.35, "lines"),point.padding = unit(0.3, "lines"))+
geom_point(data=temp,aes(x=temp$Symbol,y=temp$log2FoldChange),alpha=1,size=5.1,shape=1,stroke=1,color="black")+
theme(axis.text.y=element_text(face="bold",color="black",size=15))+theme(axis.title.y=element_text(size=14))+theme(legend.title=element_blank())
dev.off()
看起來有點(diǎn)亂,于是我分圖層整理了一下琉挖,方便大家查閱
輸出高清圖
CairoJPEG("crosstalk.jpeg",width=7200,height=4800,res=1200)
排列X軸順序
scale_x_discrete(limits=test$Symbol)
背景為白色
theme_bw()
去掉網(wǎng)格線
theme(panel.grid = element_blank())
去掉X軸坐標(biāo)
theme(axis.text.x=element_blank())
去掉X軸刻度尺
theme(axis.ticks.x = element_blank())
去掉X軸標(biāo)題
theme(axis.title.x = element_blank())
在圖上加基因名字(我只想給重疊的基因加启泣,不然太亂了)
geom_text_repel(aes(x=test$Symbol,y=test$log2FoldChange.C2.C1.,label=ifelse(test$X=="intersect",test$Symbol,"")),
colour="darkred",size=3,box.padding = unit(0.35, "lines"),point.padding = unit(0.3, "lines"))
加上外面的黑圈(先做一個(gè) 只有intersect基因的數(shù)據(jù)框temp)
temp<-test[which(test$X=="intersect"),]
geom_point(data=temp,aes(x=temp$Symbol,y=temp$log2FoldChange),alpha=1,size=5.1,shape=1,stroke=1,color="black")
此外:兩個(gè)粉色和藍(lán)色圓圈是用PPT畫的,調(diào)一下透明度就能出現(xiàn)這種效果示辈。
----------2019年3月29日更-----------
沒想到我寫的帖子竟然被健明大大pick啦寥茫,激動(dòng)之余還是激動(dòng)。一直以來都覺得自己是弱弱的小透明矾麻,執(zhí)著的學(xué)一點(diǎn)就在簡書上更一點(diǎn)纱耻,和眾多在生信路上自學(xué)的伙伴抱頭前(tong)行(ku)……
扯遠(yuǎn)了芭梯,補(bǔ)一下健明大大給我的建議,用upsetR繪制crosstalk弄喘,具體參見:https://mp.weixin.qq.com/s/h2u4Lxt5FjGZ1UoJSRqPkg
1. 還是整理好這樣的矩陣df,第三列就是富集分析得到的結(jié)果
此次我們關(guān)注以下這5個(gè)通路玖喘,看他們中的基因是否存在交集,于是把df中其他無關(guān)的通路都刪掉蘑志。
m<-c("ECM-receptor interaction","TGF-beta signaling pathway","Axon guidance","Wnt signaling pathway","Hippo signaling pathway")
df<-df %>% dplyr::filter(df[,3] %in% m)
2. 利用可視化神包UpsetR累奈,它是韋恩圖的升級(jí)版,用來表示多組交集情況急但。
?upset澎媒,查一下函數(shù)的輸入情況,發(fā)現(xiàn)是如下的這樣的矩陣
于是我們要整理出一個(gè)橫軸是基因名波桩,縱軸是通路的矩陣戒努,用0和1填充,表示有或沒有镐躲。
library(UpSetR)
##所有的基因名
allgs<-unique(df$Symbol)
##do.call這個(gè)函數(shù)會(huì)一直重復(fù)lapply運(yùn)算
u<-do.call(cbind,lapply(m,function(i){as.numeric(allgs %in% subset(df,Pathway==i)[,2])}))
rownames(u)<-allgs
colnames(u)<-m
u<-as.data.frame(u)
upset(u)
Hippo和Wnt通路交叉的基因有6個(gè)储玫,和上面的crosstalk花瓣圖一致