前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >画圈?RCircos满足你的想象!

画圈?RCircos满足你的想象!

作者头像
作图丫
发布2022-03-29 08:38:14
2.5K1
发布2022-03-29 08:38:14
举报
文章被收录于专栏:作图丫

导语

GUIDE ╲

一个典型的Circos图最外圈一般是染色体的示意图,上面的刻度表示染色体的坐标位置,然后在内部加入不同的注释信息。

背景介绍

circos图对于一些数据量较大,不方便使用常用柱状图或者箱型图表示的数据能够进行漂亮的可视化,尤其常用于基因组可视化,并且可以进行基因组不同位置关系的展示,小编今天介绍的R包RCircos,就是在R语言中最常用的circos图绘制工具,可以通过十分简单的代码绘制美观的图形!

目前,RCircos可以绘制以下图形:人类、小鼠和大鼠的染色体表意图图,热图、直方图、线、散点图等,用于表示关系的链接等。

R包安装

代码语言:javascript
复制
BiocManager::install("RCircos")
library(Rcircos)

可视化介绍

01

输入数据格式

RCircos以数据框的形式获取输入数据,该数据框可以是从read.table()读取的,也可以是由当前R session中生成的对象。数据框的前三列,除了链接图的输入外,必须是按染色体名称、染色体起始位置和染色体结束位置的顺序排列的基因组位置信息。

代码语言:javascript
复制
data(RCircos.Histogram.Data)
head(RCircos.Histogram.Data)

对于基因标签和热图,第四列必须提供基因/探针名称。

代码语言:javascript
复制
data(RCircos.Heatmap.Data)
head(RCircos.Heatmap.Data)

与其他图数据不同的是,连接线图的输入数据只有每一行按染色体名称A,染色体名称A,染色体名称A,染色体名称B,染色体名称B的顺序配对的基因组位置信息。

代码语言:javascript
复制
data(RCircos.Link.Data)
head(RCircos.Link.Data)

02

轨道布局的绘制

RCircos轨迹可以放置在染色体表意文字的内部或外部,并且可以通过改变轨迹宽度和轨迹编号轻松地操纵轨迹的详细位置。

下图显示了一个人类染色体表意文字加上三个空轨道排列在染色体表意文字的内部和外部。

03

绘图实践

首先初始化RCircos核心组件

RCircos软件包有三个内置的人类、小鼠和大鼠染色体的数据集,可以通过data()命令加载。

代码语言:javascript
复制
data(UCSC.HG19.Human.CytoBandIdeogram)
head(UCSC.HG19.Human.CytoBandIdeogram)

data(UCSC.Mouse.GRCm38.CytoBandIdeogram)
head(UCSC.Mouse.GRCm38.CytoBandIdeogram)

data(UCSC.Baylor.3.4.Rat.cytoBandIdeogram)
head(UCSC.Baylor.3.4.Rat.cytoBandIdeogram)

在加载染色体数据后,可以用RCircos的函数RCircos.Set.Core.Components()初始化。此函数需要四个参数:

cytoinfo:染色体数据

chr.exclude:需要排除在外的染色体

tracks.inside:内部要绘制多少个轨道

tracks.outside:外部要绘制多少个轨道

代码语言:javascript
复制
chr.exclude <- NULL
cyto.info <- UCSC.HG19.Human.CytoBandIdeogram
tracks.inside <- 10
tracks.outside <- 0
RCircos.Set.Core.Components(cyto.info, chr.exclude,
                              + tracks.inside, tracks.outside)

使用RCircos绘图

用RCircos进行绘图是一个循序渐进的过程。要向初始化的图片中依次添加轨道和其他数据。

我们需要先定义一个pdf文件用来储存图形

代码语言:javascript
复制
out.file <- "RCircosDemoHumanGenome.pdf"
pdf(file=out.file, height=8, width=8, compress=TRUE)
RCircos.Set.Plot.Area()

调整图形的打印区域

代码语言:javascript
复制
par(mai=c(0.25, 0.25, 0.25, 0.25))
plot.new()
plot.window(c(-2.5,2.5), c(-2.5, 2.5))

Circos图上的基因标签和连接器

代码语言:javascript
复制
RCircos.Chromosome.Ideogram.Plot()
data(RCircos.Gene.Label.Data)
name.col <- 4
side <- "in"
track.num <- 1
RCircos.Gene.Connector.Plot(RCircos.Gene.Label.Data,
                              + track.num, side)
track.num <- 2
RCircos.Gene.Name.Plot(RCircos.Gene.Label.Data,
                         + name.col,track.num, side)

热图、直方图、线图、散点图等的添加

代码语言:javascript
复制
data(RCircos.Heatmap.Data)
data.col <- 6
track.num <- 5
side <- "in"
RCircos.Heatmap.Plot(RCircos.Heatmap.Data, data.col,
                       + track.num, side)
data(RCircos.Scatter.Data)
data.col <- 5
track.num <- 6
side <- "in"
by.fold <- 1
RCircos.Scatter.Plot(RCircos.Scatter.Data, data.col,
                       + track.num, side, by.fold)
data(RCircos.Line.Data)
data.col <- 5
track.num <- 7
side <- "in"
RCircos.Line.Plot(RCircos.Line.Data, data.col,
                    + track.num, side)
data(RCircos.Histogram.Data)
data.col <- 4
track.num <- 8
side <- "in"
RCircos.Histogram.Plot(RCircos.Histogram.Data,
                         + data.col, track.num, side)
data(RCircos.Tile.Data)
track.num <- 9
side <- "in"
RCircos.Tile.Plot(RCircos.Tile.Data, track.num, side)

链接数据的添加

代码语言:javascript
复制
data(RCircos.Link.Data)
track.num <- 11
RCircos.Link.Plot(RCircos.Link.Data, track.num, TRUE)
data(RCircos.Ribbon.Data)
RCircos.Ribbon.Plot(ribbon.data=RCircos.Ribbon.Data,
                      + track.num=11, by.chromosome=FALSE, twist=FALSE)
dev.off()

小编总结

在R语言绘制Circos图的工具中,RCircos是非常简单的一种,内部提供基因组数据,我们可以初始化图形以后,根据不同的需要,制作对应的数据格式,向初始化的基因组内部添加丰富的内容!

END

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

本文分享自 作图丫 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档