生信 | Circos实战

写在前面

由于circos官网的教程太全面了,虽然好但反而感觉比较复杂,难易上手,因此我将他们精简了一下。由于官网的教程中包含的数据太杂了,所以我精简了数据与代码放到了扣扣群559758504中,有需要的自取吧。

更新日志

2021年11月3日追加更新:增加数据获取说明

每一个板块的数据,新增如何获取对应的数据,不过多多少少需要点Linux基础,看不懂也没关系,会用就行。只不过熟悉Linux的同学可以在此基础上玩出更多的花样。
链接:【生信 | circos文件准备大全(以拟南芥为例)】【生信 | Circos的安装

2021年10月26日追加更新:中文版Circos教程

https://irenexzwen.gitbooks.io/hello-gitbook/content/

一、画出轮廓

  • 染色体文件准备,格式如下
    格式:7列、无表头、\t分割。
    前2列:固定为chr -,表明我们要画染色体轮廓
    第3列:染色体ID,像身份证号,注意:如果ID中除了“_”有其他符号一律会报错
    第4列:染色体Label,像人名,会显示在图上而ID不会
    第5列:染色体起始位置
    第6列:染色体终止位置
    第7列:染色体的颜色,chr1-4代表的都是circos内置颜色的名称
chr - hs1 1 0 249250621 chr1
chr - hs2 2 0 243199373 chr2
chr - ··· · · ········· ····
chr - hsY y 0 59373566 chry
  • 编辑配置文件 ☜ 先去看这个,了解基本知识
  • 在群文件的同级目录下新建一个名为【circos.conf】的文件
vi circos.conf
  • 新建好后将下面的内容复制进去
#指定染色体文件(绝对/相对路径+文件名)
karyotype = data/karyotype/karyotype.human.txt  
#-----------------------------------------------------------------------------------
<ideogram>                #这是定义染色体相关参数的标签,以</ideogram>结尾,其中包括要设置的参数
<spacing>                 #定义染色体间隙宽度的标签,以</spacing>,其中包括要设置的参数
default = 0.005r          #r指的是圆的周长,设置0.5%圆的周长为间隙
#<pairwise hsY;hs1>       #可以用<pairwise>标签特别指定某些染色体的间隙(用的是ID),因为在大多数文章中,都会留一个大间隙,来放label
#spacing = 20r            #这里20r表示是相对default = 0.005r的20倍,也就是10%的圆的周长
#</pairwise>              #标签都要以</>结尾,
</spacing>                #间隙定义结束,下面是对染色体样式的调整
radius           = 0.90r  #轮廓的位置,这里的r指的是半径,由圆心到圆周上范围依次是0-1r,,超出部分将不再显示。
thickness        = 20p    #染色体整体的宽度,这里p指的是像素大小,也可以用r表示,1r=1500p
fill             = yes    #是否为染色体填充颜色,如果为yes,自动用第七列定义的颜色着色
stroke_color     = dgrey  #染色体边框的颜色,支持多种格式的输入,如:red或255,182,106
stroke_thickness = 2p     #染色体边框的粗细
</ideogram>               #定义染色体属性的标签结束
#-----------------------------------------------------------------------------------
#下面是每次都要复制粘贴上去的,他们属于circos自带的配置文件,用于调用颜色,距离,报错等信息
<image>                    #注意路径
<<include etc/image.conf>> #注意引用外部配置文件需要使用<<#>>
</image>
<<include etc/colors_fonts_patterns.conf>> 
#官方没有提到下面的文件,但是没有这个文件会报错,所以还是加上去
<<include etc/housekeeping.conf>>
  • 执行脚本(前提是你将circos添加到了环境变量中了,否则在circos前添加绝对路径)
circos -conf circos.conf
  • 结果
染色体轮廓

二、增加刻度线与Label

  • 由于有很多重复代码,因此\color{red}{新增代码用【\#↑↑↑/↓↓↓\#\#\#\#\#\#】包裹},注意位置不要放错,且简单或重复的标签将不再注释
#指定染色体文件(绝对/相对路径+文件名)
karyotype = data/karyotype/karyotype.human.txt  
#↓↓↓###########################################################
chromosomes_units = 1000000  #定义最小单位,即100万bp为一个units,即1u = 100w,后面刻度线都是基于此的操作,如果染色体长度都在5kw以上,推荐用100w,否则推荐用10w
#↑↑↑###########################################################
#-----------------------------------------------------------------------------------
<ideogram>                #这是定义染色体相关参数的标签,以</ideogram>结尾,其中包括要设置的参数
<spacing>                 #定义染色体间隙宽度的标签,以</spacing>,其中包括要设置的参数
default = 0.005r          #r指的是圆的周长,设置0.5%圆的周长为间隙
#<pairwise hsY;hs1>       #可以用<pairwise>标签特别指定某些染色体的间隙(用的是ID),因为在大多数文章中,都会留一个大间隙,来放label
#spacing = 20r            #这里20r表示是相对default = 0.005r的20倍,也就是10%的圆的周长
#</pairwise>              #标签都要以</>结尾,
</spacing>                #间隙定义结束,下面是对染色体样式的调整
radius           = 0.90r  #轮廓的位置,这里的r指的是半径,由圆心到圆周上范围依次是0-1r,,超出部分将不再显示。
thickness        = 20p    #染色体整体的宽度,这里p指的是像素大小,也可以用r表示,1r=1500p
fill             = yes    #是否为染色体填充颜色,如果为yes,自动用第七列定义的颜色着色
stroke_color     = dgrey  #染色体边框的颜色,支持多种格式的输入,如:red或255,182,106
stroke_thickness = 2p     #染色体边框的粗细
#↓↓↓##########################染色体标签###############################
show_label       = yes        #选择yes表示要显示label
label_font       = default    # 字体可以再 etc/fonts.conf 查看所有,默认为CMUBright-Roman
label_radius     = dims(image,radius)-60p  #使用dims()获取图像半径的大小,从而定位染色体标签的位置,也可以直接定义1.075r
label_size       = 30         #字体的大小
label_parallel   = yes        #将Label的方向设置为与染色体平行
#↑↑↑###########################################################
</ideogram>               #定义染色体属性的标签结束

#↓↓↓#########################刻度线###############################
show_ticks          = yes  #选择yes表示要显示刻度线
show_tick_labels    = yes  #选择yes表示要显示刻度线的数值
#定义刻度线的整体位置与形状
<ticks>                    #刻度线的转用标签,但凡是复数出现的,其下面的参数都表示全局参数,像下面的<tick>单数形式,都表示局部参数
radius           = 1r      #刻度线的位置,1r为最远距离,超过1r不再显示
color            = black
thickness        = 2p
multiplier       = 1e-6    #把刻度线标签(bp)缩小10万倍显示
format           = %d      #然后以整数的形式标记在刻度线上
#定义小的刻度线,且不显示数值
<tick>
spacing        = 5u        #最开始我们定义1u = 1000000,表示每500w bp显示一个小刻度线
size           = 10p
show_label     = no        #由于小的刻度线展示出来太密集,因此我们no不展示,默认不展示
</tick>
#定义大的刻度线,显示数值
<tick>
spacing        = 25u
size           = 15p
show_label     = yes
label_size     = 20p
label_offset   = 10p      #设置数值和刻度线之间的间隔
format         = %d
</tick>
</ticks>
#↑↑↑###########################################################

#-----------------------------------------------------------------------------------
#下面是每次都要复制粘贴上去的,他们属于circos自带的配置文件,用于调用颜色,距离,报错等信息
<image>                    #注意路径
<<include etc/image.conf>> #注意引用外部配置文件需要使用<<#>>
</image>
<<include etc/colors_fonts_patterns.conf>> 
#官方没有提到下面的文件,但是没有这个文件会报错,所以还是加上去
<<include etc/housekeeping.conf>>
  • 执行脚本
circos -conf circos.conf
  • 结果
增加刻度线与Label

三、增加内部连线(内含rule的使用方法,但使用到的不会太复杂)

  • 内部连线文件准备,格式如下
    格式:6列、无表头、\t分割。
    第1列:染色体ID,指连线起始的染色体
    第2列:连线起始的染色体的起始位置
    第3列:连线起始的染色体的终止位置
    第4列:染色体ID,指连线的终止染色体
    第5列:连线终止的染色体的起始位置
    第6列:连线终止的染色体的终止位置
  • Circos官网给的数据是序列相似度在90%以上的序列片段(最短1kbp)
hs1 465 30596 hs2 114046768 114076456
hs1 486 76975 hs15 100263879 100338121
hs1 486 30596 hs9 844 30515
hs1 486 9707 hsY 57762276 57771573
hs1 486 9707 hsX 154903076 154912373
  • 同样,\color{red}{新增代码用【\#↑↑↑/↓↓↓\#\#\#\#\#\#】包裹},注意位置不要放错,且简单或重复的标签将不再注释
#指定染色体文件(绝对/相对路径+文件名)
karyotype = data/karyotype/karyotype.human.txt  
chromosomes_units = 1000000  #定义最小单位,即100万bp为一个units,即1u = 100w,后面刻度线都是基于此的操作,如果染色体长度都在5kw以上,推荐用100w,否则推荐用10w
#-----------------------------------------------------------------------------------
#↓↓↓###########################################################
<links>
<link>
file          = data/5/segdup.txt   #指定存放内部连线数据的文件
radius        = 0.7r                #radius定义内部连线区域的大小,表示从0-0.7r均为连线区域,预留出位置为了给其他图形留出空间
bezier_radius = 0r            #控制连线的弯曲程度,数值越大越弯曲,范围为0r-1.5r
crest = 1  #简单理解为弯曲点的位置,越大弯曲点越向中中靠拢。由外到内数值依次减小,范围为0-1.25
thickness     = 2  #连线的粗细
#以下为开启丝带模式,其宽度与坐标差值相同,当然为了绘制出明显的丝带效果,你要人为的去夸大坐标差值才能明显显示出来
#ribbon = yes
#flat = yes
#stroke_thickness = 2
<rules>  #用来做条件判断的标签,圈图各式各样就在于rule的不同使用
<rule>
condition     = var(intrachr)        #condition表示条件,=后面为具体的动作。此为获取在同一条染色体间的连线
show          = no                   #规定在同一条染色体间的连线不展示
</rule>
<rule>
condition     = 1                  #condition = 1表示永远成立
color         = eval(var(chr2))    #连线的颜色与对应的染色体的颜色相同
flow          = continue           #当上面的rule执行完之后继续执行下面的rule,可以改为stop
</rule>
<rule>
condition  = max(var(size1),var(size2)) < 50kb  # 如果连线端点的值小于50kb则不显示,这个我不是特别确定。
show       = no
</rule>
</rules>
</link>
</links>
#↑↑↑###########################################################
<ideogram>                #这是定义染色体相关参数的标签,以</ideogram>结尾,其中包括要设置的参数
<spacing>                 #定义染色体间隙宽度的标签,以</spacing>,其中包括要设置的参数
default = 0.005r          #r指的是圆的周长,设置0.5%圆的周长为间隙
#<pairwise hsY;hs1>       #可以用<pairwise>标签特别指定某些染色体的间隙(用的是ID),因为在大多数文章中,都会留一个大间隙,来放label
#spacing = 20r            #这里20r表示是相对default = 0.005r的20倍,也就是10%的圆的周长
#</pairwise>              #标签都要以</>结尾,
</spacing>                #间隙定义结束,下面是对染色体样式的调整
radius           = 0.90r  #轮廓的位置,这里的r指的是半径,由圆心到圆周上范围依次是0-1r,,超出部分将不再显示。
thickness        = 20p    #染色体整体的宽度,这里p指的是像素大小,也可以用r表示,1r=1500p
fill             = yes    #是否为染色体填充颜色,如果为yes,自动用第七列定义的颜色着色
stroke_color     = dgrey  #染色体边框的颜色,支持多种格式的输入,如:red或255,182,106
stroke_thickness = 2p     #染色体边框的粗细
show_label       = yes        #选择yes表示要显示label
label_font       = default    # 字体可以再 etc/fonts.conf 查看所有,默认为CMUBright-Roman
label_radius     = dims(image,radius)-60p  #使用dims()获取图像半径的大小,从而定位染色体标签的位置,也可以直接定义1.075r
label_size       = 30         #字体的大小
label_parallel   = yes        #将Label的方向设置为与染色体平行
</ideogram>               #定义染色体属性的标签结束
show_ticks          = yes  #选择yes表示要显示刻度线
show_tick_labels    = yes  #选择yes表示要显示刻度线的数值
#定义刻度线的整体位置与形状
<ticks>                    #刻度线的转用标签,但凡是复数出现的,其下面的参数都表示全局参数,像下面的<tick>单数形式,都表示局部参数
radius           = 1r      #刻度线的位置,1r为最远距离,超过1r不再显示
color            = black
thickness        = 2p
multiplier       = 1e-6    #把刻度线标签(bp)缩小10万倍显示
format           = %d      #然后以整数的形式标记在刻度线上
#定义小的刻度线,且不显示数值
<tick>
spacing        = 5u        #最开始我们定义1u = 1000000,表示每500w bp显示一个小刻度线
size           = 10p
show_label     = no        #由于小的刻度线展示出来太密集,因此我们no不展示,默认不展示
</tick>
#定义大的刻度线,显示数值
<tick>
spacing        = 25u
size           = 15p
show_label     = yes
label_size     = 20p
label_offset   = 10p      #设置数值和刻度线之间的间隔
format         = %d
</tick>
</ticks>
#-----------------------------------------------------------------------------------
#下面是每次都要复制粘贴上去的,他们属于circos自带的配置文件,用于调用颜色,距离,报错等信息
<image>                    #注意路径
<<include etc/image.conf>> #注意引用外部配置文件需要使用<<#>>
</image>
<<include etc/colors_fonts_patterns.conf>> 
#官方没有提到下面的文件,但是没有这个文件会报错,所以还是加上去
<<include etc/housekeeping.conf>>
  • 由于颜色系统中hsx的颜色命名为小写,因此我们将数据文件中的ID全部改为小写(这应该是官方的BUG,自己提供的数据与流程都冲突了。至于为什么没有修复,因为在官方教程中,没有使用X/Y染色体的数据,因此他们也没有发现)
sed -i 's/hsX/hsx/g' data/karyotype/karyotype.human.txt
sed -i 's/hsY/hsy/g' data/karyotype/karyotype.human.txt
sed -i 's/hsX/hsx/g' data/5/segdup.txt
sed -i 's/hsY/hsy/g' data/5/segdup.txt
  • 执行脚本
circos -conf circos.conf
  • 结果
增加内部连线结果

四、选取特定的染色体画图

  • 由于后续官网上只提供了1234条染色体的数据信息,所以咱们为了方便展示,也选择这四条染色体,也就是几条命令的事情,分别在以下位置添加和修改代码
#在上面代码的chromosomes_units = 1000000后面加上下面的命令就可以了
chromosomes_display_default = no  #先展示所有染色体
chromosomes                 = /hs[1234]$/  #然后使用正则表达式,选择1234条染色体
<colors>  #原来的颜色太丑了,重新定义颜色,注意重新定义颜色都需要加上*号
chr1* = red
chr2* = orange
chr3* = green
chr4* = blue
</colors>
  • 然后将上面的condition = max(var(size1),var(size2)) < 50kb,修改为condition = max(var(size1),var(size2)) < 2kb
  • 执行脚本
circos -conf circos.conf
  • 结果


    circos.png

五、增加柱形图

  • 柱形图文件准备,格式如下
    格式:4列、无表头、\t分割。
    第1列:染色体ID
    第2列:柱形图起始位置
    第3列:柱形图终止位置
    第4列:柱形图的值(如果是一个就是单一的柱形图,如果是多个则是堆叠的柱形图)
hs1 0 1999999 180.0000         |#hs1 0 1999999 113.0000,20.0000,7.0000,40.0000
hs1 2000000 3999999 34.0000    |#hs1 2000000 3999999 34.0000,0.0000,0.0000,0.0000
hs1 4000000 5999999 2.0000     |#hs1 4000000 5999999 2.0000,0.0000,0.0000,0.0000
hs1 6000000 7999999 5.0000     |#hs1 6000000 7999999 1.0000,4.0000,0.0000,0.0000
  • 同样,\color{red}{新增代码用【\#↑↑↑/↓↓↓\#\#\#\#\#\#】包裹},注意位置不要放错,且简单或重复的标签将不再注释
#指定染色体文件(绝对/相对路径+文件名)
karyotype = data/karyotype/karyotype.human.txt  
chromosomes_units = 1000000  #定义最小单位,即100万bp为一个units,即1u = 100w,后面刻度线都是基于此的操作,如果染 色体长度都在5kw以上,推荐用100w,否则推荐用10w
chromosomes_display_default = no  #先展示所有染色体
chromosomes                 = /hs[1234]$/  #然后使用正则表达式,选择1234条染色体
<colors>  #原来的颜色太丑了,重新定义颜色,注意重新定义颜色都需要加上*号
chr1* = red
chr2* = orange
chr3* = green
chr4* = blue
</colors>
#-----------------------------------------------------------------------------------
#↓↓↓###########################################################
#单一柱形图
<plots>
<plot>
type = histogram    #首先指明画图类型
file = data/5/segdup.hs1234.hist.txt
r1   = 0.88r    #限制直方图显示的区域
r0   = 0.81r    #限制直方图显示的区域
fill_color = vdgrey  #给直方图填充颜色
extend_bin = no  #一般情况下,柱形图也会有完整的一圈,但设置了extend_bin = no则不会显示没有value的区域
<rules>
</rules>
</plot>
#堆叠柱形图
<plot>
type = histogram
file = data/5/segdup.hs1234.stacked.txt    #有四列value时,展示的时候对将四个value堆叠展示
r1   = 0.99r
r0   = 0.92r
fill_color  = hs1,hs2,hs3,hs5    #数据中有四列value,因此定义填充色的时候,不像fill_color = vdgrey只定义一个,要同时定义四种颜色,hsN是不同的颜色
orientation = in    #定义柱形图向内还是向外
extend_bin  = no
</plot>
</plots>
#↑↑↑###########################################################
<links>
<link>
file          = data/5/segdup.txt   #指定存放内部连线数据的文件
radius        = 0.7r                #radius定义内部连线区域的大小,表示从0-0.7r均为连线区域
bezier_radius = 0r            #控制连线的弯曲程度,数值越大越弯曲,范围为0r-1.5r
crest = 1
#bezier_radius_purity = 0.5 
#color         = black_a4  #连线的颜色
thickness     = 2  #连线的粗细
#ribbon = yes
#flat = yes
#stroke_thickness = 2
<rules>  #用来做条件判断的标签,圈图各式各样就在于rule的不同使用
<rule>
condition     = var(intrachr)        #condition表示条件,=后面为具体的动作。此为获取在同一条染色体间的连线
show          = no                   #规定在同一条染色体间的连线不展示
</rule>
<rule>
condition     = 1  #condition     = 1表示永远成立
color         = eval(var(chr2))    #连线的颜色与对应的染色体的颜色相同
flow          = continue      #当上面的rule执行完之后继续执行下面的rule,可以改为stop
</rule>
<rule>
condition  = max(var(size1),var(size2)) < 2kb
show       = no
</rule>
</rules>
</link>
</links>
<ideogram>                #这是定义染色体相关参数的标签,以</ideogram>结尾,其中包括要设置的参数
<spacing>                 #定义染色体间隙宽度的标签,以</spacing>,其中包括要设置的参数
default = 0.005r          #r指的是圆的周长,设置0.5%圆的周长为间隙
#<pairwise hsY;hs1>       #可以用<pairwise>标签特别指定某些染色体的间隙(用的是ID),因为在大多数文章中,都会留一 个大间隙,来放label
#spacing = 20r            #这里20r表示是相对default = 0.005r的20倍,也就是10%的圆的周长
#</pairwise>              #标签都要以</>结尾,
</spacing>                #间隙定义结束,下面是对染色体样式的调整
radius           = 0.90r  #轮廓的位置,这里的r指的是半径,由圆心到圆周上范围依次是0-1r,,超出部分将不再显示。
thickness        = 20p    #染色体整体的宽度,这里p指的是像素大小,也可以用r表示,1r=1500p
fill             = yes    #是否为染色体填充颜色,如果为yes,自动用第七列定义的颜色着色
stroke_color     = dgrey  #染色体边框的颜色,支持多种格式的输入,如:red或255,182,106
stroke_thickness = 2p     #染色体边框的粗细
show_label       = yes        #选择yes表示要显示label
label_font       = default    # 字体可以再 etc/fonts.conf 查看所有,默认为CMUBright-Roman
label_radius     = dims(image,radius)-60p  #使用dims()获取图像半径的大小,从而定位染色体标签的位置,也可以直接定义1.075r
label_size       = 30         #字体的大小
label_parallel   = yes        #将Label的方向设置为与染色体平行
</ideogram>               #定义染色体属性的标签结束
show_ticks          = yes  #选择yes表示要显示刻度线
show_tick_labels    = yes  #选择yes表示要显示刻度线的数值
#定义刻度线的整体位置与形状
<ticks>                    #刻度线的转用标签,但凡是复数出现的,其下面的参数都表示全局参数,像下面的<tick>单数形式,都表示局部参数
radius           = 1r      #刻度线的位置,1r为最远距离,超过1r不再显示
color            = black
thickness        = 2p
multiplier       = 1e-6    #把刻度线标签(bp)缩小10万倍显示
format           = %d      #然后以整数的形式标记在刻度线上
#定义小的刻度线,且不显示数值
<tick>
spacing        = 5u        #最开始我们定义1u = 1000000,表示每500w bp显示一个小刻度线
size           = 10p
show_label     = no        #由于小的刻度线展示出来太密集,因此我们no不展示,默认不展示
</tick>
#定义大的刻度线,显示数值
<tick>
spacing        = 25u
size           = 15p
show_label     = yes
label_size     = 20p
label_offset   = 10p      #设置数值和刻度线之间的间隔
format         = %d
</tick>
</ticks>
#-----------------------------------------------------------------------------------
#下面是每次都要复制粘贴上去的,他们属于circos自带的配置文件,用于调用颜色,距离,报错等信息
<image>                    #注意路径
<<include etc/image.conf>> #注意引用外部配置文件需要使用<<#>>
</image>
<<include etc/colors_fonts_patterns.conf>> 
#官方没有提到下面的文件,但是没有这个文件会报错,所以还是加上去
<<include etc/housekeeping.conf>>
  • 执行脚本
circos -conf circos.conf
  • 结果
柱形图结果

六、增加热图

  • 热图文件准备,格式如下
    格式:5列、无表头、\t分割。
    第1列:染色体ID
    第2列:在染色体上的起始位置
    第3列:在染色体上的终止位置
    第4列:热图的值
    第5列:key=value。只是为了区分四组数据,因此没有必要用id或者hs,能区分开就行
hs1 0 1999999 113.0000 id=hs1
hs1 0 1999999 40.0000 id=hs4
hs1 0 1999999 20.0000 id=hs2
hs1 0 1999999 7.0000 id=hs3
hs1 2000000 3999999 34.0000 id=hs1
hs1 2000000 3999999 0.0000 id=hs2
hs1 2000000 3999999 0.0000 id=hs3
hs1 2000000 3999999 0.0000 id=hs4
  • 因为热图也是plot范畴里面的,因此在<plots>任意地方添加下面的代码即可
<plot>
type  = heatmap
file  = data/5/segdup.hs1234.heatmap.txt
r1    = 0.89r
r0    = 0.88r
color = hs1_a5,hs1_a4,hs1_a3,hs1_a2,hs1_a1,hs1    #热图的不同配色方案
scale_log_base = 0.25    #均一化数据
</plot>
<plot>    #以下都是重复的代码,只不过组别不同
type  = heatmap
file  = data/5/segdup.hs1234.heatmap.txt
r1    = 0.90r
r0    = 0.89r
color = hs2_a5,hs2_a4,hs2_a3,hs2_a2,hs2_a1,hs2
scale_log_base = 0.25
<rules>
<rule>
condition = var(id) ne "hs2"    #用第五列id等于hs2的数据画热图
show      = no
</rule>
</rules>
</plot>
<plot>
type  = heatmap
file  = data/5/segdup.hs1234.heatmap.txt
r1    = 0.91r
r0    = 0.90r
color = hs3_a5,hs3_a4,hs3_a3,hs3_a2,hs3_a1,hs3
scale_log_base = 0.25
<rules>
<rule>
condition = var(id) ne "hs3"
show      = no
</rule>
</rules>
</plot>
<plot>
type  = heatmap
file  = data/5/segdup.hs1234.heatmap.txt
r1    = 0.92r
r0    = 0.91r
color = hs4_a5,hs4_a4,hs4_a3,hs4_a2,hs4_a1,hs4
scale_log_base = 0.25
<rules>
<rule>
condition = var(id) ne "hs4"
show      = no
</rule>
</rules>
</plot>
circos.png

七、增加背景与线条

  • 由于是给柱形图增加线条,因此需要将下面的代码放在柱形图内部的<plot>中
<axes> # 注意这里是axes是总block,下面的axis是子block
show = data    #只在有数据的地方加线条
thickness = 1
color     = lgrey
<axis>
spacing   = 0.1r #此处不是说线与线的间隙是0.1r,而是百分数的意思,比如plot中你设置的r1=0.90r,r0=0.95r,相差0.05r,那么spacing=0.1r就表示线与线之间的间隔是0.1*0.05=0.005r,那么画出来就应该有11条线,10个间隔。
</axis>
<axis>
spacing   = 0.2r
color     = grey
</axis> #其实到这里再加上</axes>就可以,不过还可以指定一些线段,改变颜色
<axis> #这个axis可以不要,单纯为了改变颜色
position  = 0.5r #注意,这里的0.5依旧是百分数!,比如我想在0.925r显示,就可以用0.5r,如果没有线,则会再增加一条
color     = red
</axis>
<axis> #这个axis可以不要
position  = 0.85r
color     = green
thickness = 2
</axis>
</axes>
  • 由于是给柱形图增加背景,因此需要将下面的代码放在柱形图内部的<plot>中
<backgrounds>
show  = data
<background>
color = vvlgrey
</background>
<background>
color = vlgrey
y0    = 0.2r
y1    = 0.5r
</background>
<background>
color = lgrey
y0    = 0.5r
y1    = 0.8r
</background>
<background>
color = grey
y0    = 0.8r
</background>
</backgrounds>
增加线条与背景

八、增加文字

  • 热图文件准备,格式如下
    格式:4列、无表头、\t分割。
    第1列:染色体ID
    第2列:在染色体上的起始位置
    第3列:在染色体上的终止位置
    第4列:基因ID或者其他任何文字均可
hs1 100425066 100487997 DBT
hs1 10381671 10402787 PGD
hs1 10432557 10434544 CORT
hs1 10443191 10455200 DFFA
hs1 10995265 11008135 TARDBP
hs1 110745401 110752069 HBXIP
hs1 111635006 111664707 CHIA
hs1 115113627 115124831 SIKE
hs1 11718728 11733414 AGTRAP
hs1 11840108 11841579 NPPB
<plot>
type  = text
file  = data/6/genes.labels2.txt
r1    = 0.8r
r0    = 0.7r
padding = 0p
rpadding   = 0p
show_links     =  yes
link_dims      = 0p,10p,40p,10p,10p    #这个解释起来比较复杂,它是控制连线各段的长度的
link_thickness = 1p
link_color     = black
label_snuggle = yes
max_snuggle_distance = 5r  #如果一个位点基因过密,可以调大数值,让其分散
<rules>
<rule>
condition  = var(value) =~ /a/i  #正则表达式,表示含有a或A的labels被选中,赋予额外的参数
label_font = bold
flow       = continue
</rule>
<rule>
condition  = var(value) =~ /b/i
color      = blue
</rule>
</rules>
</plot>
增加文字结果

完整版代码

#指定染色体文件(绝对/相对路径+文件名)
karyotype = data/karyotype/karyotype.human.txt  
chromosomes_units = 1000000  #定义最小单位,即100万bp为一个units,即1u = 100w,后面刻度线都是基于此的操作,如果染 色体长度都在5kw以上,推荐用100w,否则推荐用10w
chromosomes_display_default = no  #先展示所有染色体
chromosomes                 = /hs[1234]$/  #然后使用正则表达式,选择1234条染色体
<colors>  #原来的颜色太丑了,重新定义颜色,注意重新定义颜色都需要加上*号
chr1* = red
chr2* = orange
chr3* = green
chr4* = blue
</colors>
#-----------------------------------------------------------------------------------
#单一柱形图
<plots>
<plot>
type = histogram    #首先指明画图类型
file = data/5/segdup.hs1234.hist.txt
r1   = 0.88r    #限制直方图显示的区域
r0   = 0.81r    #限制直方图显示的区域
fill_color = vdgrey  #给直方图填充颜色
extend_bin = no  #一般情况下,柱形图也会有完整的一圈,但设置了extend_bin = no则不会显示没有value的区域
<backgrounds>
# Show the backgrounds only for ideograms that have data
show  = data
<background>
color = vvlgrey
</background>
<background>
color = vlgrey
y0    = 0.2r
y1    = 0.5r
</background>
<background>
color = lgrey
y0    = 0.5r
y1    = 0.8r
</background>
<background>
color = grey
y0    = 0.8r
</background>
</backgrounds>
</plot>
<plot>
type  = heatmap
file  = data/5/segdup.hs1234.heatmap.txt
r1    = 0.89r
r0    = 0.88r
color = hs1_a5,hs1_a4,hs1_a3,hs1_a2,hs1_a1,hs1
scale_log_base = 0.25
</plot>
<plot>
type  = heatmap
file  = data/5/segdup.hs1234.heatmap.txt
r1    = 0.90r
r0    = 0.89r
color = hs2_a5,hs2_a4,hs2_a3,hs2_a2,hs2_a1,hs2
scale_log_base = 0.25
<rules>
<rule>
condition = var(id) ne "hs2"
show      = no
</rule>
</rules>
</plot>
<plot>
type  = heatmap
file  = data/5/segdup.hs1234.heatmap.txt
r1    = 0.91r
r0    = 0.90r
color = hs3_a5,hs3_a4,hs3_a3,hs3_a2,hs3_a1,hs3
scale_log_base = 0.25
<rules>
<rule>
condition = var(id) ne "hs3"
show      = no
</rule>
</rules>
</plot>
<plot>
type  = heatmap
file  = data/5/segdup.hs1234.heatmap.txt
r1    = 0.92r
r0    = 0.91r
color = hs4_a5,hs4_a4,hs4_a3,hs4_a2,hs4_a1,hs4
scale_log_base = 0.25
<rules>
<rule>
condition = var(id) ne "hs4"
show      = no
</rule>
</rules>
</plot>
#堆叠柱形图
<plot>
type = histogram
file = data/5/segdup.hs1234.stacked.txt    #有四列value时,展示的时候对将四个value堆叠展示
r1   = 0.99r
r0   = 0.92r
fill_color  = hs1,hs2,hs3,hs5    #数据中有四列value,因此定义填充色的时候,不像fill_color = vdgrey只定义一个,要同时定义四种颜色,hsN是不同的颜色
orientation = in    #定义柱形图向内还是向外
extend_bin  = no
<axes>
# Show axes only on ideograms that have data for this track
show = data
thickness = 1
color     = lgrey
<axis>
spacing   = 0.1r
</axis>
<axis>
spacing   = 0.2r
color     = grey
</axis>
<axis>
position  = 0.5r
color     = red
</axis>
<axis>
position  = 0.85r
color     = green
thickness = 2
</axis>
</axes>
</plot>
<plot>
type  = text
file  = data/6/genes.labels2.txt
r1    = 0.8r
r0    = 0.7r
padding = 0p
rpadding   = 0p
show_links     =  yes
link_dims      = 0p,10p,40p,10p,10p
link_thickness = 1p
link_color     = black
label_snuggle = yes
max_snuggle_distance = 5r
<rules>
<rule>
condition = on(hs1)
show      = no
</rule>
# Text can be tested with var(value).
<rule>
condition  = var(value) =~ /a/i  #正则表达式,表示含有a或A的labels被选中,赋予额外的参数
label_font = bold
flow       = continue
</rule>
<rule>
condition  = var(value) =~ /b/i
color      = blue
</rule>
</rules>
</plot>
</plots>
<links>
<link>
file          = data/5/segdup.txt   #指定存放内部连线数据的文件
radius        = 0.7r                #radius定义内部连线区域的大小,表示从0-0.7r均为连线区域
bezier_radius = 0r            #控制连线的弯曲程度,数值越大越弯曲,范围为0r-1.5r
crest = 1
#bezier_radius_purity = 0.5 
#color         = black_a4  #连线的颜色
thickness     = 2  #连线的粗细
#ribbon = yes
#flat = yes
#stroke_thickness = 2
<rules>  #用来做条件判断的标签,圈图各式各样就在于rule的不同使用
<rule>
condition     = var(intrachr)        #condition表示条件,=后面为具体的动作。此为获取在同一条染色体间的连线
show          = no                   #规定在同一条染色体间的连线不展示
</rule>
<rule>
condition     = 1  #condition     = 1表示永远成立
color         = eval(var(chr2))    #连线的颜色与对应的染色体的颜色相同
flow          = continue      #当上面的rule执行完之后继续执行下面的rule,可以改为stop
</rule>
<rule>
condition  = max(var(size1),var(size2)) < 2kb
show       = no
</rule>
</rules>
</link>
</links>
<ideogram>                #这是定义染色体相关参数的标签,以</ideogram>结尾,其中包括要设置的参数
<spacing>                 #定义染色体间隙宽度的标签,以</spacing>,其中包括要设置的参数
default = 0.005r          #r指的是圆的周长,设置0.5%圆的周长为间隙
#<pairwise hsY;hs1>       #可以用<pairwise>标签特别指定某些染色体的间隙(用的是ID),因为在大多数文章中,都会留一 个大间隙,来放label
#spacing = 20r            #这里20r表示是相对default = 0.005r的20倍,也就是10%的圆的周长
#</pairwise>              #标签都要以</>结尾,
</spacing>                #间隙定义结束,下面是对染色体样式的调整
radius           = 0.90r  #轮廓的位置,这里的r指的是半径,由圆心到圆周上范围依次是0-1r,,超出部分将不再显示。
thickness        = 20p    #染色体整体的宽度,这里p指的是像素大小,也可以用r表示,1r=1500p
fill             = yes    #是否为染色体填充颜色,如果为yes,自动用第七列定义的颜色着色
stroke_color     = dgrey  #染色体边框的颜色,支持多种格式的输入,如:red或255,182,106
stroke_thickness = 2p     #染色体边框的粗细
show_label       = yes        #选择yes表示要显示label
label_font       = default    # 字体可以再 etc/fonts.conf 查看所有,默认为CMUBright-Roman
label_radius     = dims(image,radius)-60p  #使用dims()获取图像半径的大小,从而定位染色体标签的位置,也可以直接定义1.075r
label_size       = 30         #字体的大小
label_parallel   = yes        #将Label的方向设置为与染色体平行
</ideogram>               #定义染色体属性的标签结束
show_ticks          = yes  #选择yes表示要显示刻度线
show_tick_labels    = yes  #选择yes表示要显示刻度线的数值
#定义刻度线的整体位置与形状
<ticks>                    #刻度线的转用标签,但凡是复数出现的,其下面的参数都表示全局参数,像下面的<tick>单数形式,都表示局部参数
radius           = 1r      #刻度线的位置,1r为最远距离,超过1r不再显示
color            = black
thickness        = 2p
multiplier       = 1e-6    #把刻度线标签(bp)缩小10万倍显示
format           = %d      #然后以整数的形式标记在刻度线上
#定义小的刻度线,且不显示数值
<tick>
spacing        = 5u        #最开始我们定义1u = 1000000,表示每500w bp显示一个小刻度线
size           = 10p
show_label     = no        #由于小的刻度线展示出来太密集,因此我们no不展示,默认不展示
</tick>
#定义大的刻度线,显示数值
<tick>
spacing        = 25u
size           = 15p
show_label     = yes
label_size     = 20p
label_offset   = 10p      #设置数值和刻度线之间的间隔
format         = %d
</tick>
</ticks>
#-----------------------------------------------------------------------------------
#下面是每次都要复制粘贴上去的,他们属于circos自带的配置文件,用于调用颜色,距离,报错等信息
<image>                    #注意路径
<<include etc/image.conf>> #注意引用外部配置文件需要使用<<#>>
</image>
<<include etc/colors_fonts_patterns.conf>> 
#官方没有提到下面的文件,但是没有这个文件会报错,所以还是加上去
<<include etc/housekeeping.conf>>
  • Circos的配色、布局都是门学问,真的感觉学无止境,下面一步要做的就是从我们自己的数据中如何整理出来官方给的格式。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,230评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,261评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,089评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,542评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,542评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,544评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,922评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,578评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,816评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,576评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,658评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,359评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,920评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,859评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,381评论 2 342

推荐阅读更多精彩内容