R:Circos图通过circlize

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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容