
PPT、PS等好多工具可以幫助你實(shí)現(xiàn)這樣的圖,但是如果批量畫呢?可能手都廢了吧,還是上代碼吧。
首先用你能用的辦法將目標(biāo)區(qū)域(1:160000000-161000000)內(nèi)的基因、目標(biāo)區(qū)域上游的兩個(gè)基因、目標(biāo)區(qū)域下游的一個(gè)基因的位置都提取出來,然后為每個(gè)基因賦一個(gè)顏色。中間灰色的bar兩端的突出可以從第一個(gè)基因的開始位置向上游擴(kuò)100K、最后一個(gè)基因的結(jié)束位置向下游擴(kuò)100K。整理成作圖用的輸入文件,如下:
第1-3列是作圖基因的位置,第7列是基因的名字。
第4-5列是整個(gè)灰色bar的位置(經(jīng)過上下游擴(kuò)完以后的)。
第6列是基因的顏色,目標(biāo)區(qū)域上下游的基因用灰色表示,目標(biāo)區(qū)域內(nèi)的基因用你想要的顏色表示。
為了方便調(diào)整基因的symbol不重疊,增加第8列,1和2表示基因名字在圖的上部和下部。
用ggplot2作圖很方便,每個(gè)bar的可以通過畫矩形框填充不同的顏色實(shí)現(xiàn)。
將輸入文件讀進(jìn)來
?library(ggplot2)
?library()
?data<-read.table(file=”Region.xls”,header=T,sep="\t",stringsAsFactors=F)
計(jì)算基因最中間的位置方便標(biāo)基因label
?data$middle<-(data$end?-?data$start)/2+data$start
?color<data$color
geom_rect函數(shù)先畫灰色的bar,再畫基因,用geom_text_repel函數(shù)標(biāo)基因的label
?p<-ggplot(data)+geom_rect(aes(xmin=astart,xmax=aend,ymin=-0.01,ymax=0.01),colour="grey",fill="grey",size=0.1)+geom_rect(aes(xmin=start,?xmax=end,ymin=-0.03,ymax=0.03),colour="grey",?fill=color,size=0.1)+geom_text_repel(aes(x=middle,y=rep(0,length(color)),label=name),min.segment.length?=?1,nudge_y?=?ifelse(data$index==1,0.3,-0.3))
?p<-p+ylim(c(-1,1))
?p<-p+theme_classic()?+theme(axis.line?=?element_blank(),axis.text?=?element_blank(),axis.ticks?=?element_blank(),axis.title?=?element_blank())
?print(p)