2D 数据绘制(一)
2D
数据的绘制语法与 link
类似,在 <plots>
块中每个 <plot>
块定义一个图形,包括绘制格式以及数据文件,还可以包含 <rules>
块
circos
支持几种类型数据的图像,像散点图、折线图、热图、直方图等。
下面我们先以散点图为例,来简单说明绘制语法
1. 散点图
我们使用的数据记录的是每 100kb
的 SNP
密度
1.1 默认设置
每个 <plot>
都有默认的参数设置,在 etc/tracks
中定义了
# etc/tracks/scatter.conf
glyph = circle
glyph_size = 10
color = grey
stroke_color = black
stroke_thickness = 0
r1 = 0.79r
r0 = 0.7r
orientation = out
这些设置会应用于每个类型 type=scatter
的 <plot>
块,你可以使用 undef
取消定义
stroke_color = undef
1.2 基本散点图语法
各种二维数据类型图像的格式参数基本相同,但是会有一些例外。对于散点图,基本定义如下
<plots>
<plot>
show = yes
type = scatter
file = data/6/snp.density.txt
r1 = 0.75r
r0 = 0.90r
max = 1.0
min = 0.0
glyph = rectangle
glyph_size = 8
color = red
stroke_color = dred
stroke_thickness = 1
</plot>
</plots>
参数含义:
-
show
- 与高亮及连接一样,是否显示图像 -
type
- 绘图的类型,可以使散点图、直方图、热图等 -
file
- 需要绘制的数据文件 -
min/max
- 绘制范围,超过范围的数据将被裁剪 -
r0/r1
- 绘制图像的内径和外径,像高亮一样,支持绝对值和相对值(也可混合使用) -
glyph
- 散点图符号的形状,可以是圆形、矩形或三角形之一 -
glyph_size
- 符号的大小,像素单位 -
color
- 符号的填充色 -
stroke_color
- 符号的轮廓颜色 -
stroke_thickness
- 符号的轮廓的厚度,像素单位
数据格式
chr start end value options
注意:value
与 start-end
指定的范围相关联,而不是碱基对的位置
# value 0.005 at span 1000-2000
hs1 1000 2000 0.005
# value 0.010 at span 2001-2001, e.g. a single base position
hs1 2001 2001 0.010
circos
使用数据文件的起始和结束位置,是为了保持数据与 link
文件一致。
图形符号会绘制在跨度(start-end)
的中间,因此,上面的符号将会在 1500
和 2001
位置绘制
在 min/max
范围之外的数据点不会绘制,所以,你并不需要用规则把这些点剔除。
1.3 图像背景
r0
和 r1
参数定义了图像的径向起始和终止位点。
你可以使用 <backgrounds>
块添加背景填充。
<backgrounds>
<background>
color = vvlgrey
</background>
</backgrounds>
通过定义多个 background
块,可以对背景填充设置条纹和分层。用 y0
和 y1
定义填充的径向范围
<backgrounds>
<background>
color = vlgrey
# absolute fill range
y1 = 0.5
y0 = 0
</background>
<background>
color = vlred
# relative fill range
y1 = 1r
y0 = 0.75r
</background>
</backgrounds>
1.4 绘图轴
你可以使用 <axes>
块在绘制的图像内添加一组 y
轴网格线
<axes>
<axis>
color = red_a5
thickness = 1
spacing = 0.025r
</axis>
<axis>
color = red_a3
thickness = 2
spacing = 0.1r
</axis>
</axes>
这个轴是一系列具有固定间距的同心圆弧。间距值可以使绝对值或相对值
1.5 绘制格式规则
格式化规则的使用与 link
类似,可以在条件字段中使用 var(value)
来表示特定值的数据点。如
<rule>
condition = var(value) > 0.5
stroke_color = dgreen
color = green
glyph = rectangle
glyph_size = 6
</rule>
这一规则会将值大于 0.5
的所有点变成深绿色轮廓、绿色填充色以及大小为 6
的矩形符号
当然,你也可以在 rule
内部设置 show=no
来隐藏某些数据点
2. 折线图
折线图与散点图的不同之处在于,在每个点位置没有绘制符号,而是用线把这些点连接起来。
折线图的格式与散点图非常相似,但是有以下区别。
type=line
- 无
glyphs
- 没有glyph
参数,也就没有glyph_size
参数 -
stroke_thickness
和stroke_color
变成了thickness
和color
- 距离大于
max_gap
的相邻点不会用线连接起来,避免数据中较大的间隙
在 min/max
数据范围之外的点防止在 min/max
极值点。因此,如果许多相邻的点落在数据范围之外,则连接线可能会沿着绘图的底部或顶部延伸
如果要从数据集中删除这些点,可以在 rule
中设置 show=no
。
例如,如果你的 min/max
值为 0/0.5
,那么该规则将删除范围之外的点,使其不会影响绘制线条的方式
<rules>
<rule>
condition = var(value) < 0 || var(value) > 0.5
show = no
</rule>
</rules>