本博客使用的教程来自Circular Visualization in R (jokergoo.github.io),可以在该网站查找circlize包的所有用法。
一、染色体圈图初始化
一行代码即可绘制出人类染色体,该函数会创建一个具有染色体名称和轴的轨迹。
circos.initializeWithIdeogram()
默认情况下, circos.initializeWithIdeogram()
使用人类基因组 hg19
的 cytoband 数据初始化绘图。用户还可以通过指定 species
参数来初始化其他物种,它将自动下载相应物种的 cytoband 文件。
circos.initializeWithIdeogram(species = "hg18")
circos.initializeWithIdeogram(species = "mm10")
hg18 | mm10 |
还可以通过指定 chromosome.index
来选择染色体的子集,并对染色体进行排序
circos.initializeWithIdeogram(chromosome.index = paste0("chr", c(3,5,2,8)))
text(0, 0, "subset of chromosomes", cex = 1)#在圈图中插入文字
二、加入基因组数据
这里只介绍 BED 格式的数据(其中第一列是染色体名称,第二列和第三列是开始和结束位置,第四列及之后是关联值)
bed = generateRandomBed(nc = 2)#随机生成示例数据
head(bed, n = 2)
# chr start end value1 value2
#1 chr1 150969 175741 0.2828066 0.63818454
#2 chr1 316425 381038 -0.4544091 0.02978984
1、绘制折线图
circos.track函数表示新建一个圈层
circos.track(factors=bed$chr, x = bed$start, y = bed$value1, track.index=3,
track.height = 0.1,ylim=c(-2,2),bg.col="pink",
panel.fun = function(x, y) {
circos.lines(x, y, col = "red") #默认折线图,x和y来自上边的参数传递
})
2、绘制点图
circos.track(factors=bed$chr, x = bed$start, y = bed$value1,#track.index=3,
#bg.col=rainbow(19),
track.height = 0.1,ylim=c(-2,2),
panel.fun = function(x, y) {
circos.points(x, y, col = "red",cex =0.3)
circos.segments(x0=CELL_META$xlim[1],x1=CELL_META$xlim[2],
y0=th,y1=th,col = 'black')
})