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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容