2D 数据绘制(五)
9. 字形—Part I
规则不仅可以用于调整标签的文本,也可以为所有标签设置值
condition = 1
value = X
你可以把这个规则和其他规则结合起来。例如,如果文本是序列,则可以根据其标识设置字符的颜色,然后将其更改为其他值。
# first change color
condition = var(value) eq "A"
color = red
flow = continue
condition = var(value) eq "T"
color = blue
flow = continue
condition = var(value) eq "C"
color = green
flow = continue
# change label text, for all data points
condition = 1
value = X
你可以通过更改字体并将文本标签调整为所需的字形(fonts/symbols/symbols.ttf
)。例如,用符号字体设置方形符号
label_font = glyph
...
condition = 1
value = m
...
符号字体定义了以下字符
small
| medium
| | large
| | |
a b c square
d e f rhombus
g h i triangle up
j k l triangle down
m n o circle
upper case - solid
lower case - hollow
10. 符号—Part II
将标签改为符号是制作一般字形轨迹的理想选择。例如,考虑一个基因列表(data/6/genes.glyph.txt
)
...
hs12 56428271 56432431 CDK4_cancer
hs12 64504506 64595566 HMGA2_cancer
hs12 64504506 64638901 P52926_cancer
...
hs10 108323411 108914282 SORCS1_omim
hs10 111614513 111673192 XPNPEP1_omim
hs10 111755715 111885310 ADD3_omim
...
hs7 139864688 139948811 DENND2A_other
hs7 140019421 140041377 ADCK2_other
hs7 140042949 140052913 NDUFB2_other
...
其中 _cancer
后缀表示癌基因,_omim
表示疾病相关的,_other
表示剩余的基因,使用下面的规则改变基因的字形颜色
flow = continue
condition = var(value) =~ /cancer/
color = red
condition = var(value) =~ /omim/
color = green
condition = var(value) =~ /other/
color = blue
condition = 1
value = N
通过设置规则隐藏基因
r0 = 1r+10p
r1 = 1r+200p
color = red
...
condition = var(value) !~ /cancer/
# hide anything that doesn't match "cancer"
show = no
condition = 1
# circle
value = N
10.1 用符号密度绘制
最后看一个例子,其中符号的大小编码数据点的密度。circos
不会为你计算密度,但你可以预处理数据并将密度编码为标签大小。
在 data/6/gene.density.txt
文件中
...
hs1 3000000 3000000 cancer label_size=1
hs1 6000000 6000000 cancer label_size=2
...
hs1 1000000 1000000 omim label_size=9
hs1 2000000 2000000 omim label_size=14
...
hs1 1000000 1000000 other label_size=26
hs1 2000000 2000000 other label_size=10
...
使用规则,你可以将 label_size
重新映射到另一个值,原来的值范围是 1p
到 42p
# linear remap to [6,50]
label_size = eval(remap_int(var(label_size),1,42,6,50))
# ... with shallower increase
label_size = eval(remap_int(sqrt(var(label_size)),1,sqrt(42),6,50))
# ... with steeper increase
label_size = eval(remap_int(var(label_size)**2,1,42**2,6,50))
11. 连接器
连接器是连接 ideogram
上两个径向位置之间的铰接线段
连接器的定义为
type = connector
file = data/6/connectors.txt
r0 = 0.8925r
r1 = 0.999r
connector_dims = 0,0.3,0.4,0.3,0
thickness = 2
color = black
connector_dims
参数控制连接器的线的形状,这条线有 5
个片段,5
个值定义了每个片段的大小
数据文件定义了用线连接 r0
和 r1
的位置
# connectors.txt
...
hs22 15116257 16046604
hs22 15136864 16056568
...
12. 组合绘制
在本节中,我们创建一个包含大量轨迹的图像,包括前面讨论的所有类型。
这张图片看起来像是心脏病发作,所有,如果不是为了探索 circos
的语法,并不建议这样做
12.1 在数据层之间放置高亮
当高亮显示定义为 plot
块时,你可以使用 z-depth
值将其放置在其他数据层中的任何位置
高亮绘制在热图的上方,但在折线图、直方图、线和图块下面。
12.2 随机抽样数据
你可以选择使用包含对随机数生成器的调用规则来随机隐藏数据点,Perl
函数 rand()
函数返回从 [0,1)
中均匀抽样的随机数.
condition = rand() < 0.1
show = no
在这种情况下,平均 10%
的数据点不会出现。每次创建图像时,将隐藏一组不同的点。
12.3 随机格式化数据
例如,要使 50%
的点是红色的
condition = rand() < 0.5
color = red
12.4 隐藏热图元素
你可以使用 show=no
来隐藏热图元素,也可以颠倒颜色列表,并在列表中包含背景颜色
type = heatmap
...
color = black,grey,vlgrey,white,lgreen,green,dgreen
...
12.5 相邻直方图
可以通过堆叠两个直方图来创建一个浮动的直方图。外部直方图的朝向是向外,内部直方图朝向内
type = histogram
...
orientation = in
r0 = 0.65r
r1 = 0.75r
...
type = histogram
...
orientation = out
r0 = 0.75r
r1 = 0.85r
...
12.6 相邻 ideogram 半径
调整 ideogram
的字符标识及区域半径
chromosomes = hs2[a]:5-35;hs2[b]:40-75;hs2[c]:80-115;hs2[d]:120-155;hs2[e]:160-195;hs2[f]:200-240
chromosomes_radius = a:0.95r;b:0.9r;c:0.85r;d:0.8r;e:0.75r;f:0.7r
最后图片长这样