R语言acres92 region_[R语言 学习笔记] circlize绘制基因组圈图的原理与使用(一)...
由于圖形大多由點、線、多邊形等簡單圖形組成,circlize實現(xiàn)了在圓形作圖區(qū)域添加圖形的低級繪圖函數(shù),通過低級繪圖函數(shù)的不同組合,可以輕松生成更復(fù)雜的圖形。這一原則確保了各種類型的高級圖形不會受軟件包本身的通用性限制,并且可以在此基礎(chǔ)上構(gòu)建針對特定興趣的高級包。
歡迎大家批評指正
轉(zhuǎn)載請標(biāo)明出處:https://www.ivistang.com/articles/296
circlize的原理
circlize會把一塊畫布上的常見坐標(biāo)系統(tǒng)轉(zhuǎn)化成極坐標(biāo)系統(tǒng),并將其標(biāo)注成普通的二維坐標(biāo)系。這一塊區(qū)域就被稱為track,不同track組成了一個形如圈的sector。
panel.fun參數(shù)
panel.fun通常會在當(dāng)前track區(qū)域進行繪制,為了能夠批量在當(dāng)前sector繪制圖形,可以設(shè)置sector.index=get.cell.meta.data("sector.index")以及track.index=get.cell.meta.data("track.index"),通過trackPlotRegion來繪制新的sector。panel.fun的通常設(shè)置形式是panel.fun=function(region,value,...){...}。circos.genomicTrackPlotRegion接受的輸入形式為數(shù)據(jù)框,這可以類比為一個bed文件。一個通常的bed文件應(yīng)該至少有四行,region就是前三列,表示了染色體、起始位點、終止位點。value則對應(yīng)了其他數(shù)據(jù)列。
和弦圖示例
代碼如下:
library(circlize)
genome=read.cytoband(species = "hg19") ###circlize包預(yù)制的hg19基因組
chr=data.frame(chr=names(genome$chr.len),start=1,end=genome$chr.len)
set.seed(12345)
bed=generateRandomBed(nr = 50,species = "hg19") ###生成隨機bed注釋
bed$color=sample(rainbow(7),size = 55,replace = TRUE)
link1=generateRandomBed(nr=100)
link1$color="skyblue"
link2=generateRandomBed(nr=100)
link2=link2[sample(1:nrow(link2), nrow(link2)),]
####設(shè)置輸出文件####
#pdf("random_circle1.pdf")
circos.clear()
####和弦圖初始化####
circos.initialize(factors = as.factor(a$chromosome),xlim = chr[,2:3])
####添加坐標(biāo)軸####
circos.genomicTrackPlotRegion(chr, ylim = c(0, 1), bg.border = NA, track.height=0.05,panel.fun = function(region,value,...){
sector.index = get.cell.meta.data("sector.index")
track.index = get.cell.meta.data("track.index")
xlim = get.cell.meta.data("xlim", sector.index = sector.index, track.index = track.index)
major.by = 40000000
major.at = seq(floor(xlim[1]/major.by) * major.by, xlim[2], by = major.by)
major.at = c(major.at, major.at[length(major.at)] + major.by)
major.tick.labels=major.at/1000000
circos.axis(h = 1,labels.cex = 0.8, major.at = major.at, labels = major.tick.labels,labels.font=2,col="grey",minor.ticks = 0,
sector.index = sector.index,track.index = track.index,major.tick.length = convert_y(1.5,"mm",sector.index,track.index),lwd = 2)
circos.rect(xlim[1],0,xlim[2],1,col="grey",border=NA)
})
####添加基因塊####
circos.genomicTrackPlotRegion(bed,ylim = c(0, 1), bg.border = NA, track.height=0.05,panel.fun = function(region,value,...){
sector.index = get.cell.meta.data("sector.index");print(sector.index)
track.index = get.cell.meta.data("track.index");print(track.index)
circos.rect(region$start,0,region$end,1,col=value$color,sector.index = sector.index,track.index = track.index,border=NA)
})
####添加link####
circos.genomicLink(link1, link2, col = link1$color, border = NA)
#dev.off()
結(jié)果圖
總結(jié)
以上是生活随笔為你收集整理的R语言acres92 region_[R语言 学习笔记] circlize绘制基因组圈图的原理与使用(一)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 类似wm concat_or
- 下一篇: python实例 77,78