日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

R语言acres92 region_[R语言 学习笔记] circlize绘制基因组圈图的原理与使用(一)...

發(fā)布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 R语言acres92 region_[R语言 学习笔记] circlize绘制基因组圈图的原理与使用(一)... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

由于圖形大多由點、線、多邊形等簡單圖形組成,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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。