Circos图可以通过Circos官方下载。使用教程
个人感觉R画出的图莫名的有种优越感。图片优美,数据衔接方便。可视化,就首选R.
华人小哥,开发了R包circlize用于Circos图。circlize github地址
circlize在线电子书 Circular Visualization in R (jokergoo.github.io)
1.安装circlize
install.packages("circlize")
2.circlize绘图的原理
绘制是从外圈往内圈,一圈一圈绘制的。
circos.clear()#初始化,如果前面绘制过,则清空画布,从第一圈开始绘制
circos.par("track.height" = 0.1)#设置每一圈的高度为10%
circos.initializeWithIdeogram(plotType = NULL)
bed = generateRandomBed(nr = 100)
##第1圈
circos.genomicTrack(bed, panel.fun = function(region, value, ...) {
circos.genomicLines(region, value, type = "l", ...)#绘制基因组数据,用折线
})
##第2圈
circos.genomicTrack(bed, numeric.column = 4,
panel.fun = function(region, value, ...) {
# numeric.column is automatically passed to `circos.genomicPoints()`
circos.genomicPoints(region, value,cex=0.25, ...)#绘制基因组数据,用散点
})
bed的数据格式是:
chr start end value1
1 chr1 14469506 18337628 0.84710953
2 chr1 30748362 37272545 -0.20273840
3 chr1 71335907 80561701 0.03841746
4 chr1 86693969 125073619 0.55653742
5 chr1 147936959 173168706 -0.30889214
6 chr1 178652869 179623084 0.03241299
该软件提供的有genomic
的函数,是用于基因组分析。如果使用带有genomic
的函数,注意染色体,这个默认的染色体格式是chr1
这种类型,默认的人类的染色体数据。如果是其他格式的染色体编号,需要设置如下
circos.genomicInitialize(IDM,major.by = 50000000)#后面的是设置刻度为大刻度为50M,每个大刻度默认是有5个小刻度。前面的IDM是数据框,用于自定义染色体数据。
IDM数据框的格式如下:
name start end
CHR01 1 120000000
CHR02 1 240000000
IDM第一列是你实际使用的染色体的名称,第二列是起始位置1,第三列是染色体长度。
三列的列名必须和上面的列名完全一致。
基础绘图函数
如果直接使用原生的函数绘制,这样就可以使用其他格式的染色体名称。
可以绘制的图形格式有:后面展示的是对应的函数的需要的最少的参数个数
Points点 circos.points(x, y)
Lines线条circos.lines(x, y)
Segments面circos.segments(x0, y0, x1, y1)
Text文本circos.text(x, y, labels)
Rectangles矩形circos.rect(xleft, ybottom, xright, ytop)
polygons多边形circos.polygon(x, y)
Axes坐标轴circos.axis(h)
Barplots, boxplots and violin plots 柱状图、箱线图、小提琴图
circos.barplot(value, 1:10 - 0.5, col = 1:10)
circos.boxplot(value, 1:10 - 0.5, col = 1:10)
circos.violin(value, pos)
Links连线
circos.link(sector.index1, 0, sector.index2, 0)
circos.link(sector.index1, 0, sector.index2, 0, rou1, rou2)
绘制热图、进化树
circos.heatmap()
基因组专用的函数
circos.initializeWithIdeogram()
circos.genomicInitialize()
circos.genomicTrack()
circos.genomicPoints()
circos.genomicLines()
circos.genomicText()
circos.genomicRect()
circos.genomicLink()
circos.genomicIdeogram()
基因组的坐标轴
circos.genomicHeatmap()
circos.genomicLabels()
circos.genomicDensity()
circos.genomicRainfall()
高阶函数
chordDiagram()
可以用于绘制共线性,就是俗称的弦图。
批量执行函数circos.track可以批量绘制图形
circos.track(..., panel.fun = function(x, y) {
circos.points(x, y)
})
circos.points(x, y, sector.index, track.index)