从零开始学CIRCOS绘制圈图(二)
在从零开始学Circos绘制圈图(一)
我们已经绘制出一个比较丑的circos图,这一部分是讲解一些细节。
这一部分会从上一步的两个文件开始,分别是
karyotype.tair10.txt
chr - chr1 chr1 0 30427617 chr1
chr - chr2 chr2 0 19698289 chr2
chr - chr3 chr3 0 23459830 chr3
chr - chr4 chr4 0 18585056 chr4
chr - chr5 chr5 0 26975502 chr5
circos.conf
karyotype = karyotype.tair10.txtdefault = 0.005rradius= 0.90r
thickness= 20p
fill= yes
stroke_color= dgrey
stroke_thickness = 2p
<>
<>
<>
配色 第一个要解决的问题是配色问题,其实上一部分的配色定义依旧有点丑。如果不想重新打开文件修改的话,其实除了在karyotype文件里定义颜色外,我们还可以直接在circos.conf文件定义颜色.
举个例子,在
karyotype = karyotype.tair10.txt
后加一行chromosomes_color = chr1=rdylbu-11-div-1,chr2=rdylbu-11-div-3,chr3=rdylbu-11-div-5,chr4=rdylbu-11-div-7,chr5=rdylbu-11-div-9
问题是,我们怎们知道这些名字后所代表的颜色呢?
【从零开始学CIRCOS绘制圈图(二)】Circos中颜色的命名格式为
PALETTE-NUMCOLORS-TYPE-IDX
:- PALETTE:调色版名,如rdylbu
- NUMCOLORS: 颜色数目, 11
- 调色版类型: div(diverging), seq(sequential), qual(qualitative)
- IDX: 调色版中的颜色索引
因此,
gnbu-9-seq
对应的是就是下图的9-class GnBu
文章图片
颜色 配色不仅仅用在karyotype中,在后续的热图和柱状图等还会涉及到它,毕竟一张好看的图,配色占了很大的比例。
显示label 默认输出图片是没有染色体名字的标签(label),需要在
里添加和label
有关的参数......
show_label= yes #展示label
label_font= default # 字体
label_radius= dims(ideogram,radius) + 0.05r #位置
label_size= 16 # 字体大小
label_parallel = yes # 是否平行label_format= eval(sprintf("%s",var(chr))) # 格式
关于标签(label), 更详细的介绍在http://circos.ca/documentation/tutorials/ideograms/labels/
重新运行之后,发现这个标签的字有点小了。有两种处理方法,一种是调整
label_size
,比如说48,另一种是调整图片整体大小。文章图片
显示标签 图片设置 默认情况下,输出图片的 半径是1500p, 所以设置的
label_size=16
就会显得特别小。我们可以在配置文件中调整图片的半径,以及其他设置。
dir*= .# 输出文件夹
radius* = 500p # 图片半径
svg*= no# 是否输出svg
<>
注: 在参数后加一个
*
表示覆盖已有的设置,比如说svg*=no
就是覆盖已有的svg=yes
。运行结果如下
文章图片
修改输出图片大小 刻度(ticks) 大部分的circos还会有刻度来展示染色体的大小。由于ticks的定制比较复杂,所以一般会单独搞一个配置文件,
ticks.conf
存放ticks相关的参数设置.chromosomes_units = 1000000
show_ticks= yes
show_tick_labels= yesradius= 1r
color= black
thickness= 2pmultiplier= 1e-6 #输出的标签为实际长度与其相乘format= %d # %d表示显示整数
spacing= 1u
size= 5p
spacing= 5u
size= 10p
show_label= yes
label_size= 10p
label_offset= 10p
format= %d
用
show_ticks
和 show_tick_labels
控制是否展示刻度,以及刻度对应的标签。与
里控制刻度的全局参数,例如位置为1r(radius=1r), 颜色为黑色(color=black), 厚度为2p(thickness=2p), 由于默认直接展示染色体的实际位置,因此会显示1000000这种结果,所以定义multiplier=1e-6
, 实际显示结果为 1000000 * 1e-6 = 1。后面就可以通过
和
来分别绘制不同类型的tick,重要的参数如下:-
spacing
表示刻度之间的距离,1u表示一个长度单位,需要在circos.conf
文件里通过chromosomes_units
来定义,通常都是chromosomes_units=1000000
。 -
size
表示tick的长度 -
show_label
: 控制是否展示标签,默认不展示。 -
label_offset
: 则是让label往外再移动一点距离
circos -conf circos.conf
运行结果如下文章图片
增加刻度 我们发现有些刻度的标签和染色体标签发生了重叠,这个可以通过
label_radius
进行调整。单位 上面出现了控制图形不同元素大小的三个单位,p,r,u。p(pixels), 表示绝对大小, r(relative), 相对大小, u(chromosome unit)。 如果使用p作为单位,需要考虑最终输出图形
定义的radius。 而r是相对大小,会随着最终图形大小而发生变换。u一般在显示刻度时使用。推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- 一个人的碎碎念
- 我从来不做坏事
- 上班后阅读开始变成一件奢侈的事
- 从蓦然回首到花开在眼前,都是为了更好的明天。
- 日志打卡
- 西湖游
- 改变自己,先从自我反思开始
- leetcode|leetcode 92. 反转链表 II
- 从我的第一张健身卡谈传统健身房