circos 学习手册(二十一)

2D 数据绘制(二)

3. 直方图

circos 直方图是折线线图的变形,在折线图中,相邻点用一条直线连接起来,而直方图中,点之间构成一条阶梯状的轨迹。

设置参数 type=histogram,绘制直方图

在折线图和散点图中,数据点位于跨度的中间。因此通过如下定义一个数据点

hs1 1000 2000 0.5

该点将会绘制在 1500 的位置处。如果你的数据值与特定的位置相关,需要将起始和终止位置设置为同一个值。

hs1 1500 1500 0.5

但是,在直方图中,整个 1000-2000 范围将会对应一个值为 0.5 的直方图的 bin(直方图的一个柱子)

3.1 扩展 bins

如果设置 extend_bin=yes,则每个 bin 的左右边界将会延伸到该 bin 与相邻 bin 的中间点。

该值是默认设置的。例如,你的数据是

hs1 1000 2000 0.5
hs1 5000 5500 0.25
hs1 9000 9250 0.75

如果设置了 extend_bin=yes,中间的 bin 5000-5500 将其左侧扩展到 avg(2000,5000)=3500,右侧将会扩展到avg(5500,9000)=7250

因此,即使数据跨度不是连续的,但是直方图在这三个 bins 之间也是连续的。

如果 extend_bin=no,则直方图将有三个分离的 bin

你有时可能会注意到,即使设置了 extend_bin=no,相邻的 bin(起始终止之间的距离在 1bp 内)也会连接起来。这将使得 extend_bin=no 有助于区分没有数据的区域

如果你的数据非常密集,直方图会变得非常拥挤且难以理解。因此,当相邻数据点之间的角度距离至少跨越几个像素时,直方图和折线图才最有用

直方图类型对于跨度上的浮点值有效,对单基因数据点效果更差,如果数据非常密集,建议使用折线图。

image.png
3.2 跳过数据点

你可以使用 Perl 的取模运算符(%)编写一个跳过某些数据点的规则。如果数据点的起点/终点坐标是每 250kb 一个,但只希望每 1Mb 绘制一个点,则可以设置如下规则

<rule>
condition  = var(start) % 1Mb
show       = no
</rule>

判断条件是每个 bin 的起始值(250kb、500kb、750kb...)除以 1Mb 后的余数。如果 start1Mb 的倍数,余数为 0,规则失败

但是,如果 start 不是 1Mb 的倍数,则余数为正数,规则将对该点应用 show=no,从而隐藏该点。

3.3 处理抽样率

无论你创建的是位图还是 SVG 图像,你是无法在图像上绘制超过给定图像大小能够解析的数据量。

例如,你的 ideogram 半径为 1000 像素,则其周长为 6000 像素。因此,你只有 6000 个可分辨的数据位置。

如果考虑使用抗锯齿技术实现亚像素采样,则最多只能有 12000 个位置。

circos 会一次读取所有的数据,并存储在内存中。为了避免读取所有数据,可以使用 skip_runmin_value_change 参数。

如果设置了 skip_run 参数,circos 将只能读取具有相同值的连续数据点的第一个。如

<plot>
skip_run = yes
...
</plot>
# data input
chr1 100 200 0.25 # read in
chr1 200 300 0.1  # read in
chr1 300 400 0.1  # not read in
chr1 400 500 0.1  # not read in
chr1 500 600 0.1  # not read in
chr1 600 700 0.3  # read in

min_value_change 参数的工作原理类似,要求第 n 个读入的值必须与第 n-1 个被读入的值之间的差值至少 min_value_change 才会被读入。如

<plot>
min_value_change = 5
...
</plot>
# data input
chr1 100 200 1   # read in
chr1 200 300 2   # not read in (difference = 1 < 5)
chr1 300 400 5   # not read in (difference = 4 < 5)
chr1 400 500 6   # read in     (difference = 5 >= 5)
chr1 500 600 3   # not read in (difference = 3 < 5)
chr1 600 700 13  # read in     (difference = 7 >= 5)
chr1

即使这些原始数据采样方法是可用的,但是强烈建议自己先对数据进行过滤,再作为输入数据

3.4 设置轴范围

如果未使用 min/max 指定轴范围,则将缩放轴以跨越整个数据范围,可以显示设置轴范围。例如

min=-1
max=0

将有效隐藏此范围之外的任何值

image.png
3.5 隐藏值

你可以通过设置轴范围来裁剪数据值,如果你的数据在 [-1,1] 范围内,并设置了

min=0
max=1

则只显示子范围 [0,1] 中的数据。但是,如果希望保留原始轴范围,并禁止显示数据范围,则你应使用 rule

下面的规则将隐藏负值数据

<rules>
<rule>
condition  = var(value) < 0
show       = no
</rule>
</rules>
3.6 轴方向

默认情况下,y 轴的方向是向外的。这意味着较小的值比较大的值更接近更接近圆的中心。对于直方图,正值的 bin 指向外部,负值的 bin 指向内部。

你可以使用 orientation 设置调整 y 轴的方向,使 y 轴指向内部

orientation = in

其效果与在所有数据值上翻转正负号相同

3.7 填充直方图

使用颜色填充直方图

fill_color = red

通过将两个直方图组合在一起(每个分别用于负值和正值数据)并使用不同颜色,可以实现视觉上的吸引力

image.png
3.8 填充扩展 bin

扩展的 bin 会根据原始 bin 设置的格式填充和描边。

image.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

名本无名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值