需求
??最近做個(gè)性化分析,突然發(fā)現(xiàn)一張能夠很好反應(yīng)差異富集的柱狀圖,如下圖所示;

富集分析上下調(diào)圖
??上圖右側(cè)表示上調(diào)代謝通路,左側(cè)代表下調(diào)代謝通路,上下調(diào)分別有不同的顏色,中間灰色代表沒(méi)有顯著性的結(jié)果。
測(cè)試數(shù)據(jù)生成
??生成的測(cè)試數(shù)據(jù)集來(lái)源網(wǎng)上,主要為x、y兩個(gè)數(shù)據(jù),以及后續(xù)對(duì)數(shù)據(jù)的處理。
library(ggplot2)#用于可視化
library(dplyr)#用于數(shù)據(jù)處理
set.seed(1111)#此命令保證數(shù)據(jù)結(jié)果可以重現(xiàn)在任何電腦上
x <- 1980+1:36#賦值x
y <- round(100*rnorm(36))#賦值y
mydata <- data.frame(x=x, y=y)#創(chuàng)建數(shù)據(jù)集mydata
head(mydata)
mydata <- mydata%>%mutate(x_t=ifelse(y>=0,-4*nchar(x), 4*nchar(x))) #生成label的坐標(biāo)
head(mydata)
測(cè)試數(shù)據(jù)集處理
??由于需要將y值的絕對(duì)值中間的為非顯著性的條目,因此需要在矩陣中添加一列,這一列,上調(diào)為yes,下調(diào)的為no,不顯著的為not significant。
max<-50
min<- -50
sig<-c()
for (i in mydata$y ){
print(i)
significant<-''
if(i>=max){significant<-'yes'}else if(i< 0 && abs(i) >= max ){significant<-'no'}else if(min<i && i<max){significant<-'not significant'}else(print('yao'))
print(significant)
sig<-c(sig,significant)
}
畫(huà)圖
??畫(huà)圖命令如下:
mydata$x<-as.character(mydata$x) #將數(shù)字變量轉(zhuǎn)換成字符串變量,防止畫(huà)圖自動(dòng)排序
mydata<-mydata[order(mydata$y),]
mydata$significant<-sig
mydata$significant<-factor(mydata$significant,levels=c('yes','not significant','no'))#設(shè)置排序
mydata$x<-factor(mydata$x,levels=mydata$x)
ggplot(data=mydata, aes(x=x, y=y, fill=significant))+geom_bar(stat = "identity",position = "identity",width=0.9)+coord_flip()+scale_fill_manual(values = c("purple",'grey', "blue"), guide=FALSE)+xlab("Year")+geom_text(aes(y=x_t,label=x), vjust=0.3, color="black",size=3)+geom_abline(linetype="dashed",intercept = 50, slope = 0,size=1,colour='gray')+geom_abline(linetype="dashed",intercept = -50, slope = 0,size=1,colour='gray')+theme(panel.grid=element_blank(),panel.border=element_blank(),axis.title.y=element_blank(),axis.text.y=element_blank(),axis.ticks.y=element_blank())

代謝通路上下調(diào)圖
??設(shè)定不顯著性的閾值為(-50,50),閾值有虛線表示,此圖顏色與最開(kāi)始需求圖顏色不一致,這個(gè)可以修改,不在這里詳述了
修改
后記
修改顏色:
ggplot(data=mydata, aes(x=x, y=y, fill=significant))+geom_bar(stat = "identity",position = "identity",width=0.9)+coord_flip()+scale_fill_manual(values = c("#1C86EE",'grey', "#90EE90"), guide=FALSE)+xlab("Year")+geom_text(aes(y=x_t,label=x), vjust=0.3, color="black",size=3)+geom_abline(linetype="dashed",intercept = 50, slope = 0,size=1,colour='gray')+geom_abline(linetype="dashed",intercept = -50, slope = 0,size=1,colour='gray')+theme(panel.grid=element_blank(),panel.border=element_blank(),axis.title.y=element_blank(),axis.text.y=element_blank(),axis.ticks.y=element_blank())

修改顏色后圖片