前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言绘制Circos图

R语言绘制Circos图

作者头像
一粒沙
发布2019-07-31 09:52:45
5.6K0
发布2019-07-31 09:52:45
举报
文章被收录于专栏:R语言交流中心R语言交流中心

Circos图加拿大的生物信息科学家 Martin Krzywinski 开发的,最初主要用于基因组序列相关数据的可视化。现在越来越多的领域把Circos图引入其中。今天我们介绍在R语言中如何绘制Circos图。

首先我们看下Circos的官网(http://circos.ca/),其实他们提供了自己的绘制工具包,为了更加方便绘制Circos。我们利用了R语言中的circlizeR包进行Circos的绘制。

1. Install.packages(“circlize”)#安装R包。

2. R包的载入之后的状态

3. 我们看下R包中可以实现的功能函数列表。

名称

简介

circos.initialize

创建Circos图布对象

circos.track

创建track

circos.update

单独需要编辑的cell

circos.par

设计Circos的布局,Crcos起始位置设定

circos.info

Circos构成信息,CELL_META获取对应的Circos值

circos.clear

重置图形参数

circos.points

添加点

circos.lines

添加由点组成的线

circos.rect

绘制矩形,cell也是矩形

circos.polygon

绘制多边形,或者说是阴影区域

circos.segments

绘制两点之间直线

circos.axis,circos.xaxis,circos.yaxis

为每个cell添加坐标轴值

circos.link

绘制cell之间的连线

circos.trackPoints

为同一个track中所有的cell中添加点

circos.trackLines

为同一个track中所有的cell中添加线

circos.trackText

为同一个track中所有的cell中添加标签

circos.initializeWithIdeogram

基因染色体分布图形绘制带条图

circos.genomicInitialize

基因染色体分布图形绘制不带条图

circos.genomicHeatmap

绘制热图

circos.genomicDensity

基因密度图绘制

circos.genomicLabels

标注特殊的基因区域

chordDiagram

体现两者之间关联程度的大小

4. 样例程序的运行。我们首先了解Circos中索引sector.index =n(n=a,b,c…),track.index =m(m=1,2,3…)。

首先绘制第一个track,并使用circos.points为其中一个cell添加其他颜色点

circos.initialize(letters[1:8], xlim = c(0,1))

circos.track(ylim = c(0, 1), panel.fun =function(x, y) {

circos.points(runif(10), runif(10))

})

circos.points(runif(10), runif(10),sector.index = "c", pch = 16, col = "red")

只要不运行circos.clear函数,通过以下函数可以增加相应的track。

circos.track(ylim = c(0, 1),panel.fun = function(x, y) {

circos.points(runif(10), runif(10))

})

我们可以再添加一层绘制曲线以及带阴影区域track。

circos.trackPlotRegion(ylim = c(-3, 3),track.height = 0.4, panel.fun = function(x, y) {

x1 = runif(20)

y1 = x1 + rnorm(20)

or = order(x1)

x1 = x1[or]

y1 = y1[or]

loess.fit = loess(y1 ~ x1)

loess.predict = predict(loess.fit, x1, se = TRUE)

d1 = c(x1, rev(x1))

d2 = c(loess.predict$fit + loess.predict$se.fit,

rev(loess.predict$fit - loess.predict$se.fit))

circos.polygon(d1, d2, col = "#CCCCCC", border = NA)

circos.points(x1, y1, cex = 0.5)

circos.lines(x1, loess.predict$fit)

})

最后我们运行circos.clear()清空我们图形缓存。

以上就是Circos的绘图原理,当然如果想更加漂亮的绘制Circos还需要颜色的搭配。如果想把多个Circos进行整合可以直接使用函数layout(),结果如下图:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言交流中心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档