生信 | Circos實(shí)戰(zhàn)

寫在前面

由于circos官網(wǎng)的教程太全面了,雖然好但反而感覺(jué)比較復(fù)雜,難易上手,因此我將他們精簡(jiǎn)了一下。由于官網(wǎng)的教程中包含的數(shù)據(jù)太雜了,所以我精簡(jiǎn)了數(shù)據(jù)與代碼放到了扣扣群559758504中,有需要的自取吧。

更新日志

2021年11月3日追加更新:增加數(shù)據(jù)獲取說(shuō)明

每一個(gè)板塊的數(shù)據(jù),新增如何獲取對(duì)應(yīng)的數(shù)據(jù),不過(guò)多多少少需要點(diǎn)Linux基礎(chǔ),看不懂也沒(méi)關(guān)系,會(huì)用就行。只不過(guò)熟悉Linux的同學(xué)可以在此基礎(chǔ)上玩出更多的花樣。
鏈接:【生信 | circos文件準(zhǔn)備大全(以擬南芥為例)】【生信 | Circos的安裝

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

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

一、畫出輪廓

  • 染色體文件準(zhǔn)備,格式如下
    格式:7列、無(wú)表頭、\t分割。
    前2列:固定為chr -,表明我們要畫染色體輪廓
    第3列:染色體ID,像身份證號(hào),注意:如果ID中除了“_”有其他符號(hào)一律會(huì)報(bào)錯(cuò)
    第4列:染色體Label,像人名,會(huì)顯示在圖上而ID不會(huì)
    第5列:染色體起始位置
    第6列:染色體終止位置
    第7列:染色體的顏色,chr1-4代表的都是circos內(nèi)置顏色的名稱
chr - hs1 1 0 249250621 chr1
chr - hs2 2 0 243199373 chr2
chr - ··· · · ········· ····
chr - hsY y 0 59373566 chry
  • 編輯配置文件 ? 先去看這個(gè),了解基本知識(shí)
  • 在群文件的同級(jí)目錄下新建一個(gè)名為【circos.conf】的文件
vi circos.conf
  • 新建好后將下面的內(nèi)容復(fù)制進(jìn)去
#指定染色體文件(絕對(duì)/相對(duì)路徑+文件名)
karyotype = data/karyotype/karyotype.human.txt  
#-----------------------------------------------------------------------------------
<ideogram>                #這是定義染色體相關(guān)參數(shù)的標(biāo)簽,以</ideogram>結(jié)尾,其中包括要設(shè)置的參數(shù)
<spacing>                 #定義染色體間隙寬度的標(biāo)簽,以</spacing>,其中包括要設(shè)置的參數(shù)
default = 0.005r          #r指的是圓的周長(zhǎng),設(shè)置0.5%圓的周長(zhǎng)為間隙
#<pairwise hsY;hs1>       #可以用<pairwise>標(biāo)簽特別指定某些染色體的間隙(用的是ID),因?yàn)樵诖蠖鄶?shù)文章中,都會(huì)留一個(gè)大間隙,來(lái)放label
#spacing = 20r            #這里20r表示是相對(duì)default = 0.005r的20倍,也就是10%的圓的周長(zhǎng)
#</pairwise>              #標(biāo)簽都要以</>結(jié)尾,
</spacing>                #間隙定義結(jié)束,下面是對(duì)染色體樣式的調(diào)整
radius           = 0.90r  #輪廓的位置,這里的r指的是半徑,由圓心到圓周上范圍依次是0-1r,,超出部分將不再顯示。
thickness        = 20p    #染色體整體的寬度,這里p指的是像素大小,也可以用r表示,1r=1500p
fill             = yes    #是否為染色體填充顏色,如果為yes,自動(dòng)用第七列定義的顏色著色
stroke_color     = dgrey  #染色體邊框的顏色,支持多種格式的輸入,如:red或255,182,106
stroke_thickness = 2p     #染色體邊框的粗細(xì)
</ideogram>               #定義染色體屬性的標(biāo)簽結(jié)束
#-----------------------------------------------------------------------------------
#下面是每次都要復(fù)制粘貼上去的,他們屬于circos自帶的配置文件,用于調(diào)用顏色,距離,報(bào)錯(cuò)等信息
<image>                    #注意路徑
<<include etc/image.conf>> #注意引用外部配置文件需要使用<<#>>
</image>
<<include etc/colors_fonts_patterns.conf>> 
#官方?jīng)]有提到下面的文件,但是沒(méi)有這個(gè)文件會(huì)報(bào)錯(cuò),所以還是加上去
<<include etc/housekeeping.conf>>
  • 執(zhí)行腳本(前提是你將circos添加到了環(huán)境變量中了,否則在circos前添加絕對(duì)路徑)
circos -conf circos.conf
  • 結(jié)果
染色體輪廓

二、增加刻度線與Label

  • 由于有很多重復(fù)代碼,因此\color{red}{新增代碼用【\#↑↑↑/↓↓↓\#\#\#\#\#\#】包裹},注意位置不要放錯(cuò),且簡(jiǎn)單或重復(fù)的標(biāo)簽將不再注釋
#指定染色體文件(絕對(duì)/相對(duì)路徑+文件名)
karyotype = data/karyotype/karyotype.human.txt  
#↓↓↓###########################################################
chromosomes_units = 1000000  #定義最小單位,即100萬(wàn)bp為一個(gè)units,即1u = 100w,后面刻度線都是基于此的操作,如果染色體長(zhǎng)度都在5kw以上,推薦用100w,否則推薦用10w
#↑↑↑###########################################################
#-----------------------------------------------------------------------------------
<ideogram>                #這是定義染色體相關(guān)參數(shù)的標(biāo)簽,以</ideogram>結(jié)尾,其中包括要設(shè)置的參數(shù)
<spacing>                 #定義染色體間隙寬度的標(biāo)簽,以</spacing>,其中包括要設(shè)置的參數(shù)
default = 0.005r          #r指的是圓的周長(zhǎng),設(shè)置0.5%圓的周長(zhǎng)為間隙
#<pairwise hsY;hs1>       #可以用<pairwise>標(biāo)簽特別指定某些染色體的間隙(用的是ID),因?yàn)樵诖蠖鄶?shù)文章中,都會(huì)留一個(gè)大間隙,來(lái)放label
#spacing = 20r            #這里20r表示是相對(duì)default = 0.005r的20倍,也就是10%的圓的周長(zhǎng)
#</pairwise>              #標(biāo)簽都要以</>結(jié)尾,
</spacing>                #間隙定義結(jié)束,下面是對(duì)染色體樣式的調(diào)整
radius           = 0.90r  #輪廓的位置,這里的r指的是半徑,由圓心到圓周上范圍依次是0-1r,,超出部分將不再顯示。
thickness        = 20p    #染色體整體的寬度,這里p指的是像素大小,也可以用r表示,1r=1500p
fill             = yes    #是否為染色體填充顏色,如果為yes,自動(dòng)用第七列定義的顏色著色
stroke_color     = dgrey  #染色體邊框的顏色,支持多種格式的輸入,如:red或255,182,106
stroke_thickness = 2p     #染色體邊框的粗細(xì)
#↓↓↓##########################染色體標(biāo)簽###############################
show_label       = yes        #選擇yes表示要顯示label
label_font       = default    # 字體可以再 etc/fonts.conf 查看所有,默認(rèn)為CMUBright-Roman
label_radius     = dims(image,radius)-60p  #使用dims()獲取圖像半徑的大小,從而定位染色體標(biāo)簽的位置,也可以直接定義1.075r
label_size       = 30         #字體的大小
label_parallel   = yes        #將Label的方向設(shè)置為與染色體平行
#↑↑↑###########################################################
</ideogram>               #定義染色體屬性的標(biāo)簽結(jié)束

#↓↓↓#########################刻度線###############################
show_ticks          = yes  #選擇yes表示要顯示刻度線
show_tick_labels    = yes  #選擇yes表示要顯示刻度線的數(shù)值
#定義刻度線的整體位置與形狀
<ticks>                    #刻度線的轉(zhuǎn)用標(biāo)簽,但凡是復(fù)數(shù)出現(xiàn)的,其下面的參數(shù)都表示全局參數(shù),像下面的<tick>單數(shù)形式,都表示局部參數(shù)
radius           = 1r      #刻度線的位置,1r為最遠(yuǎn)距離,超過(guò)1r不再顯示
color            = black
thickness        = 2p
multiplier       = 1e-6    #把刻度線標(biāo)簽(bp)縮小10萬(wàn)倍顯示
format           = %d      #然后以整數(shù)的形式標(biāo)記在刻度線上
#定義小的刻度線,且不顯示數(shù)值
<tick>
spacing        = 5u        #最開始我們定義1u = 1000000,表示每500w bp顯示一個(gè)小刻度線
size           = 10p
show_label     = no        #由于小的刻度線展示出來(lái)太密集,因此我們no不展示,默認(rèn)不展示
</tick>
#定義大的刻度線,顯示數(shù)值
<tick>
spacing        = 25u
size           = 15p
show_label     = yes
label_size     = 20p
label_offset   = 10p      #設(shè)置數(shù)值和刻度線之間的間隔
format         = %d
</tick>
</ticks>
#↑↑↑###########################################################

#-----------------------------------------------------------------------------------
#下面是每次都要復(fù)制粘貼上去的,他們屬于circos自帶的配置文件,用于調(diào)用顏色,距離,報(bào)錯(cuò)等信息
<image>                    #注意路徑
<<include etc/image.conf>> #注意引用外部配置文件需要使用<<#>>
</image>
<<include etc/colors_fonts_patterns.conf>> 
#官方?jīng)]有提到下面的文件,但是沒(méi)有這個(gè)文件會(huì)報(bào)錯(cuò),所以還是加上去
<<include etc/housekeeping.conf>>
  • 執(zhí)行腳本
circos -conf circos.conf
  • 結(jié)果
增加刻度線與Label

三、增加內(nèi)部連線(內(nèi)含rule的使用方法,但使用到的不會(huì)太復(fù)雜)

  • 內(nèi)部連線文件準(zhǔn)備,格式如下
    格式:6列、無(wú)表頭、\t分割。
    第1列:染色體ID,指連線起始的染色體
    第2列:連線起始的染色體的起始位置
    第3列:連線起始的染色體的終止位置
    第4列:染色體ID,指連線的終止染色體
    第5列:連線終止的染色體的起始位置
    第6列:連線終止的染色體的終止位置
  • Circos官網(wǎng)給的數(shù)據(jù)是序列相似度在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}{新增代碼用【\#↑↑↑/↓↓↓\#\#\#\#\#\#】包裹},注意位置不要放錯(cuò),且簡(jiǎn)單或重復(fù)的標(biāo)簽將不再注釋
#指定染色體文件(絕對(duì)/相對(duì)路徑+文件名)
karyotype = data/karyotype/karyotype.human.txt  
chromosomes_units = 1000000  #定義最小單位,即100萬(wàn)bp為一個(gè)units,即1u = 100w,后面刻度線都是基于此的操作,如果染色體長(zhǎng)度都在5kw以上,推薦用100w,否則推薦用10w
#-----------------------------------------------------------------------------------
#↓↓↓###########################################################
<links>
<link>
file          = data/5/segdup.txt   #指定存放內(nèi)部連線數(shù)據(jù)的文件
radius        = 0.7r                #radius定義內(nèi)部連線區(qū)域的大小,表示從0-0.7r均為連線區(qū)域,預(yù)留出位置為了給其他圖形留出空間
bezier_radius = 0r            #控制連線的彎曲程度,數(shù)值越大越彎曲,范圍為0r-1.5r
crest = 1  #簡(jiǎn)單理解為彎曲點(diǎn)的位置,越大彎曲點(diǎn)越向中中靠攏。由外到內(nèi)數(shù)值依次減小,范圍為0-1.25
thickness     = 2  #連線的粗細(xì)
#以下為開啟絲帶模式,其寬度與坐標(biāo)差值相同,當(dāng)然為了繪制出明顯的絲帶效果,你要人為的去夸大坐標(biāo)差值才能明顯顯示出來(lái)
#ribbon = yes
#flat = yes
#stroke_thickness = 2
<rules>  #用來(lái)做條件判斷的標(biāo)簽,圈圖各式各樣就在于rule的不同使用
<rule>
condition     = var(intrachr)        #condition表示條件,=后面為具體的動(dòng)作。此為獲取在同一條染色體間的連線
show          = no                   #規(guī)定在同一條染色體間的連線不展示
</rule>
<rule>
condition     = 1                  #condition = 1表示永遠(yuǎn)成立
color         = eval(var(chr2))    #連線的顏色與對(duì)應(yīng)的染色體的顏色相同
flow          = continue           #當(dāng)上面的rule執(zhí)行完之后繼續(xù)執(zhí)行下面的rule,可以改為stop
</rule>
<rule>
condition  = max(var(size1),var(size2)) < 50kb  # 如果連線端點(diǎn)的值小于50kb則不顯示,這個(gè)我不是特別確定。
show       = no
</rule>
</rules>
</link>
</links>
#↑↑↑###########################################################
<ideogram>                #這是定義染色體相關(guān)參數(shù)的標(biāo)簽,以</ideogram>結(jié)尾,其中包括要設(shè)置的參數(shù)
<spacing>                 #定義染色體間隙寬度的標(biāo)簽,以</spacing>,其中包括要設(shè)置的參數(shù)
default = 0.005r          #r指的是圓的周長(zhǎng),設(shè)置0.5%圓的周長(zhǎng)為間隙
#<pairwise hsY;hs1>       #可以用<pairwise>標(biāo)簽特別指定某些染色體的間隙(用的是ID),因?yàn)樵诖蠖鄶?shù)文章中,都會(huì)留一個(gè)大間隙,來(lái)放label
#spacing = 20r            #這里20r表示是相對(duì)default = 0.005r的20倍,也就是10%的圓的周長(zhǎng)
#</pairwise>              #標(biāo)簽都要以</>結(jié)尾,
</spacing>                #間隙定義結(jié)束,下面是對(duì)染色體樣式的調(diào)整
radius           = 0.90r  #輪廓的位置,這里的r指的是半徑,由圓心到圓周上范圍依次是0-1r,,超出部分將不再顯示。
thickness        = 20p    #染色體整體的寬度,這里p指的是像素大小,也可以用r表示,1r=1500p
fill             = yes    #是否為染色體填充顏色,如果為yes,自動(dòng)用第七列定義的顏色著色
stroke_color     = dgrey  #染色體邊框的顏色,支持多種格式的輸入,如:red或255,182,106
stroke_thickness = 2p     #染色體邊框的粗細(xì)
show_label       = yes        #選擇yes表示要顯示label
label_font       = default    # 字體可以再 etc/fonts.conf 查看所有,默認(rèn)為CMUBright-Roman
label_radius     = dims(image,radius)-60p  #使用dims()獲取圖像半徑的大小,從而定位染色體標(biāo)簽的位置,也可以直接定義1.075r
label_size       = 30         #字體的大小
label_parallel   = yes        #將Label的方向設(shè)置為與染色體平行
</ideogram>               #定義染色體屬性的標(biāo)簽結(jié)束
show_ticks          = yes  #選擇yes表示要顯示刻度線
show_tick_labels    = yes  #選擇yes表示要顯示刻度線的數(shù)值
#定義刻度線的整體位置與形狀
<ticks>                    #刻度線的轉(zhuǎn)用標(biāo)簽,但凡是復(fù)數(shù)出現(xiàn)的,其下面的參數(shù)都表示全局參數(shù),像下面的<tick>單數(shù)形式,都表示局部參數(shù)
radius           = 1r      #刻度線的位置,1r為最遠(yuǎn)距離,超過(guò)1r不再顯示
color            = black
thickness        = 2p
multiplier       = 1e-6    #把刻度線標(biāo)簽(bp)縮小10萬(wàn)倍顯示
format           = %d      #然后以整數(shù)的形式標(biāo)記在刻度線上
#定義小的刻度線,且不顯示數(shù)值
<tick>
spacing        = 5u        #最開始我們定義1u = 1000000,表示每500w bp顯示一個(gè)小刻度線
size           = 10p
show_label     = no        #由于小的刻度線展示出來(lái)太密集,因此我們no不展示,默認(rèn)不展示
</tick>
#定義大的刻度線,顯示數(shù)值
<tick>
spacing        = 25u
size           = 15p
show_label     = yes
label_size     = 20p
label_offset   = 10p      #設(shè)置數(shù)值和刻度線之間的間隔
format         = %d
</tick>
</ticks>
#-----------------------------------------------------------------------------------
#下面是每次都要復(fù)制粘貼上去的,他們屬于circos自帶的配置文件,用于調(diào)用顏色,距離,報(bào)錯(cuò)等信息
<image>                    #注意路徑
<<include etc/image.conf>> #注意引用外部配置文件需要使用<<#>>
</image>
<<include etc/colors_fonts_patterns.conf>> 
#官方?jīng)]有提到下面的文件,但是沒(méi)有這個(gè)文件會(huì)報(bào)錯(cuò),所以還是加上去
<<include etc/housekeeping.conf>>
  • 由于顏色系統(tǒng)中hsx的顏色命名為小寫,因此我們將數(shù)據(jù)文件中的ID全部改為小寫(這應(yīng)該是官方的BUG,自己提供的數(shù)據(jù)與流程都沖突了。至于為什么沒(méi)有修復(fù),因?yàn)樵诠俜浇坛讨校瑳](méi)有使用X/Y染色體的數(shù)據(jù),因此他們也沒(méi)有發(fā)現(xiàn))
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
  • 執(zhí)行腳本
circos -conf circos.conf
  • 結(jié)果
增加內(nèi)部連線結(jié)果

四、選取特定的染色體畫圖

  • 由于后續(xù)官網(wǎng)上只提供了1234條染色體的數(shù)據(jù)信息,所以咱們?yōu)榱朔奖阏故荆策x擇這四條染色體,也就是幾條命令的事情,分別在以下位置添加和修改代碼
#在上面代碼的chromosomes_units = 1000000后面加上下面的命令就可以了
chromosomes_display_default = no  #先展示所有染色體
chromosomes                 = /hs[1234]$/  #然后使用正則表達(dá)式,選擇1234條染色體
<colors>  #原來(lái)的顏色太丑了,重新定義顏色,注意重新定義顏色都需要加上*號(hào)
chr1* = red
chr2* = orange
chr3* = green
chr4* = blue
</colors>
  • 然后將上面的condition = max(var(size1),var(size2)) < 50kb,修改為condition = max(var(size1),var(size2)) < 2kb
  • 執(zhí)行腳本
circos -conf circos.conf
  • 結(jié)果


    circos.png

五、增加柱形圖

  • 柱形圖文件準(zhǔn)備,格式如下
    格式:4列、無(wú)表頭、\t分割。
    第1列:染色體ID
    第2列:柱形圖起始位置
    第3列:柱形圖終止位置
    第4列:柱形圖的值(如果是一個(gè)就是單一的柱形圖,如果是多個(gè)則是堆疊的柱形圖)
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}{新增代碼用【\#↑↑↑/↓↓↓\#\#\#\#\#\#】包裹},注意位置不要放錯(cuò),且簡(jiǎn)單或重復(fù)的標(biāo)簽將不再注釋
#指定染色體文件(絕對(duì)/相對(duì)路徑+文件名)
karyotype = data/karyotype/karyotype.human.txt  
chromosomes_units = 1000000  #定義最小單位,即100萬(wàn)bp為一個(gè)units,即1u = 100w,后面刻度線都是基于此的操作,如果染 色體長(zhǎng)度都在5kw以上,推薦用100w,否則推薦用10w
chromosomes_display_default = no  #先展示所有染色體
chromosomes                 = /hs[1234]$/  #然后使用正則表達(dá)式,選擇1234條染色體
<colors>  #原來(lái)的顏色太丑了,重新定義顏色,注意重新定義顏色都需要加上*號(hào)
chr1* = red
chr2* = orange
chr3* = green
chr4* = blue
</colors>
#-----------------------------------------------------------------------------------
#↓↓↓###########################################################
#單一柱形圖
<plots>
<plot>
type = histogram    #首先指明畫圖類型
file = data/5/segdup.hs1234.hist.txt
r1   = 0.88r    #限制直方圖顯示的區(qū)域
r0   = 0.81r    #限制直方圖顯示的區(qū)域
fill_color = vdgrey  #給直方圖填充顏色
extend_bin = no  #一般情況下,柱形圖也會(huì)有完整的一圈,但設(shè)置了extend_bin = no則不會(huì)顯示沒(méi)有value的區(qū)域
<rules>
</rules>
</plot>
#堆疊柱形圖
<plot>
type = histogram
file = data/5/segdup.hs1234.stacked.txt    #有四列value時(shí),展示的時(shí)候?qū)⑺膫€(gè)value堆疊展示
r1   = 0.99r
r0   = 0.92r
fill_color  = hs1,hs2,hs3,hs5    #數(shù)據(jù)中有四列value,因此定義填充色的時(shí)候,不像fill_color = vdgrey只定義一個(gè),要同時(shí)定義四種顏色,hsN是不同的顏色
orientation = in    #定義柱形圖向內(nèi)還是向外
extend_bin  = no
</plot>
</plots>
#↑↑↑###########################################################
<links>
<link>
file          = data/5/segdup.txt   #指定存放內(nèi)部連線數(shù)據(jù)的文件
radius        = 0.7r                #radius定義內(nèi)部連線區(qū)域的大小,表示從0-0.7r均為連線區(qū)域
bezier_radius = 0r            #控制連線的彎曲程度,數(shù)值越大越彎曲,范圍為0r-1.5r
crest = 1
#bezier_radius_purity = 0.5 
#color         = black_a4  #連線的顏色
thickness     = 2  #連線的粗細(xì)
#ribbon = yes
#flat = yes
#stroke_thickness = 2
<rules>  #用來(lái)做條件判斷的標(biāo)簽,圈圖各式各樣就在于rule的不同使用
<rule>
condition     = var(intrachr)        #condition表示條件,=后面為具體的動(dòng)作。此為獲取在同一條染色體間的連線
show          = no                   #規(guī)定在同一條染色體間的連線不展示
</rule>
<rule>
condition     = 1  #condition     = 1表示永遠(yuǎn)成立
color         = eval(var(chr2))    #連線的顏色與對(duì)應(yīng)的染色體的顏色相同
flow          = continue      #當(dāng)上面的rule執(zhí)行完之后繼續(xù)執(zhí)行下面的rule,可以改為stop
</rule>
<rule>
condition  = max(var(size1),var(size2)) < 2kb
show       = no
</rule>
</rules>
</link>
</links>
<ideogram>                #這是定義染色體相關(guān)參數(shù)的標(biāo)簽,以</ideogram>結(jié)尾,其中包括要設(shè)置的參數(shù)
<spacing>                 #定義染色體間隙寬度的標(biāo)簽,以</spacing>,其中包括要設(shè)置的參數(shù)
default = 0.005r          #r指的是圓的周長(zhǎng),設(shè)置0.5%圓的周長(zhǎng)為間隙
#<pairwise hsY;hs1>       #可以用<pairwise>標(biāo)簽特別指定某些染色體的間隙(用的是ID),因?yàn)樵诖蠖鄶?shù)文章中,都會(huì)留一 個(gè)大間隙,來(lái)放label
#spacing = 20r            #這里20r表示是相對(duì)default = 0.005r的20倍,也就是10%的圓的周長(zhǎng)
#</pairwise>              #標(biāo)簽都要以</>結(jié)尾,
</spacing>                #間隙定義結(jié)束,下面是對(duì)染色體樣式的調(diào)整
radius           = 0.90r  #輪廓的位置,這里的r指的是半徑,由圓心到圓周上范圍依次是0-1r,,超出部分將不再顯示。
thickness        = 20p    #染色體整體的寬度,這里p指的是像素大小,也可以用r表示,1r=1500p
fill             = yes    #是否為染色體填充顏色,如果為yes,自動(dòng)用第七列定義的顏色著色
stroke_color     = dgrey  #染色體邊框的顏色,支持多種格式的輸入,如:red或255,182,106
stroke_thickness = 2p     #染色體邊框的粗細(xì)
show_label       = yes        #選擇yes表示要顯示label
label_font       = default    # 字體可以再 etc/fonts.conf 查看所有,默認(rèn)為CMUBright-Roman
label_radius     = dims(image,radius)-60p  #使用dims()獲取圖像半徑的大小,從而定位染色體標(biāo)簽的位置,也可以直接定義1.075r
label_size       = 30         #字體的大小
label_parallel   = yes        #將Label的方向設(shè)置為與染色體平行
</ideogram>               #定義染色體屬性的標(biāo)簽結(jié)束
show_ticks          = yes  #選擇yes表示要顯示刻度線
show_tick_labels    = yes  #選擇yes表示要顯示刻度線的數(shù)值
#定義刻度線的整體位置與形狀
<ticks>                    #刻度線的轉(zhuǎn)用標(biāo)簽,但凡是復(fù)數(shù)出現(xiàn)的,其下面的參數(shù)都表示全局參數(shù),像下面的<tick>單數(shù)形式,都表示局部參數(shù)
radius           = 1r      #刻度線的位置,1r為最遠(yuǎn)距離,超過(guò)1r不再顯示
color            = black
thickness        = 2p
multiplier       = 1e-6    #把刻度線標(biāo)簽(bp)縮小10萬(wàn)倍顯示
format           = %d      #然后以整數(shù)的形式標(biāo)記在刻度線上
#定義小的刻度線,且不顯示數(shù)值
<tick>
spacing        = 5u        #最開始我們定義1u = 1000000,表示每500w bp顯示一個(gè)小刻度線
size           = 10p
show_label     = no        #由于小的刻度線展示出來(lái)太密集,因此我們no不展示,默認(rèn)不展示
</tick>
#定義大的刻度線,顯示數(shù)值
<tick>
spacing        = 25u
size           = 15p
show_label     = yes
label_size     = 20p
label_offset   = 10p      #設(shè)置數(shù)值和刻度線之間的間隔
format         = %d
</tick>
</ticks>
#-----------------------------------------------------------------------------------
#下面是每次都要復(fù)制粘貼上去的,他們屬于circos自帶的配置文件,用于調(diào)用顏色,距離,報(bào)錯(cuò)等信息
<image>                    #注意路徑
<<include etc/image.conf>> #注意引用外部配置文件需要使用<<#>>
</image>
<<include etc/colors_fonts_patterns.conf>> 
#官方?jīng)]有提到下面的文件,但是沒(méi)有這個(gè)文件會(huì)報(bào)錯(cuò),所以還是加上去
<<include etc/housekeeping.conf>>
  • 執(zhí)行腳本
circos -conf circos.conf
  • 結(jié)果
柱形圖結(jié)果

六、增加熱圖

  • 熱圖文件準(zhǔn)備,格式如下
    格式:5列、無(wú)表頭、\t分割。
    第1列:染色體ID
    第2列:在染色體上的起始位置
    第3列:在染色體上的終止位置
    第4列:熱圖的值
    第5列:key=value。只是為了區(qū)分四組數(shù)據(jù),因此沒(méi)有必要用id或者h(yuǎn)s,能區(qū)分開就行
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
  • 因?yàn)闊釄D也是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    #均一化數(shù)據(jù)
</plot>
<plot>    #以下都是重復(fù)的代碼,只不過(guò)組別不同
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的數(shù)據(jù)畫熱圖
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

七、增加背景與線條

  • 由于是給柱形圖增加線條,因此需要將下面的代碼放在柱形圖內(nèi)部的<plot>中
<axes> # 注意這里是axes是總block,下面的axis是子block
show = data    #只在有數(shù)據(jù)的地方加線條
thickness = 1
color     = lgrey
<axis>
spacing   = 0.1r #此處不是說(shuō)線與線的間隙是0.1r,而是百分?jǐn)?shù)的意思,比如plot中你設(shè)置的r1=0.90r,r0=0.95r,相差0.05r,那么spacing=0.1r就表示線與線之間的間隔是0.1*0.05=0.005r,那么畫出來(lái)就應(yīng)該有11條線,10個(gè)間隔。
</axis>
<axis>
spacing   = 0.2r
color     = grey
</axis> #其實(shí)到這里再加上</axes>就可以,不過(guò)還可以指定一些線段,改變顏色
<axis> #這個(gè)axis可以不要,單純?yōu)榱烁淖冾伾?position  = 0.5r #注意,這里的0.5依舊是百分?jǐn)?shù)!,比如我想在0.925r顯示,就可以用0.5r,如果沒(méi)有線,則會(huì)再增加一條
color     = red
</axis>
<axis> #這個(gè)axis可以不要
position  = 0.85r
color     = green
thickness = 2
</axis>
</axes>
  • 由于是給柱形圖增加背景,因此需要將下面的代碼放在柱形圖內(nèi)部的<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>
增加線條與背景

八、增加文字

  • 熱圖文件準(zhǔn)備,格式如下
    格式:4列、無(wú)表頭、\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    #這個(gè)解釋起來(lái)比較復(fù)雜,它是控制連線各段的長(zhǎng)度的
link_thickness = 1p
link_color     = black
label_snuggle = yes
max_snuggle_distance = 5r  #如果一個(gè)位點(diǎn)基因過(guò)密,可以調(diào)大數(shù)值,讓其分散
<rules>
<rule>
condition  = var(value) =~ /a/i  #正則表達(dá)式,表示含有a或A的labels被選中,賦予額外的參數(shù)
label_font = bold
flow       = continue
</rule>
<rule>
condition  = var(value) =~ /b/i
color      = blue
</rule>
</rules>
</plot>
增加文字結(jié)果

完整版代碼

#指定染色體文件(絕對(duì)/相對(duì)路徑+文件名)
karyotype = data/karyotype/karyotype.human.txt  
chromosomes_units = 1000000  #定義最小單位,即100萬(wàn)bp為一個(gè)units,即1u = 100w,后面刻度線都是基于此的操作,如果染 色體長(zhǎng)度都在5kw以上,推薦用100w,否則推薦用10w
chromosomes_display_default = no  #先展示所有染色體
chromosomes                 = /hs[1234]$/  #然后使用正則表達(dá)式,選擇1234條染色體
<colors>  #原來(lái)的顏色太丑了,重新定義顏色,注意重新定義顏色都需要加上*號(hào)
chr1* = red
chr2* = orange
chr3* = green
chr4* = blue
</colors>
#-----------------------------------------------------------------------------------
#單一柱形圖
<plots>
<plot>
type = histogram    #首先指明畫圖類型
file = data/5/segdup.hs1234.hist.txt
r1   = 0.88r    #限制直方圖顯示的區(qū)域
r0   = 0.81r    #限制直方圖顯示的區(qū)域
fill_color = vdgrey  #給直方圖填充顏色
extend_bin = no  #一般情況下,柱形圖也會(huì)有完整的一圈,但設(shè)置了extend_bin = no則不會(huì)顯示沒(méi)有value的區(qū)域
<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時(shí),展示的時(shí)候?qū)⑺膫€(gè)value堆疊展示
r1   = 0.99r
r0   = 0.92r
fill_color  = hs1,hs2,hs3,hs5    #數(shù)據(jù)中有四列value,因此定義填充色的時(shí)候,不像fill_color = vdgrey只定義一個(gè),要同時(shí)定義四種顏色,hsN是不同的顏色
orientation = in    #定義柱形圖向內(nèi)還是向外
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  #正則表達(dá)式,表示含有a或A的labels被選中,賦予額外的參數(shù)
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   #指定存放內(nèi)部連線數(shù)據(jù)的文件
radius        = 0.7r                #radius定義內(nèi)部連線區(qū)域的大小,表示從0-0.7r均為連線區(qū)域
bezier_radius = 0r            #控制連線的彎曲程度,數(shù)值越大越彎曲,范圍為0r-1.5r
crest = 1
#bezier_radius_purity = 0.5 
#color         = black_a4  #連線的顏色
thickness     = 2  #連線的粗細(xì)
#ribbon = yes
#flat = yes
#stroke_thickness = 2
<rules>  #用來(lái)做條件判斷的標(biāo)簽,圈圖各式各樣就在于rule的不同使用
<rule>
condition     = var(intrachr)        #condition表示條件,=后面為具體的動(dòng)作。此為獲取在同一條染色體間的連線
show          = no                   #規(guī)定在同一條染色體間的連線不展示
</rule>
<rule>
condition     = 1  #condition     = 1表示永遠(yuǎn)成立
color         = eval(var(chr2))    #連線的顏色與對(duì)應(yīng)的染色體的顏色相同
flow          = continue      #當(dāng)上面的rule執(zhí)行完之后繼續(xù)執(zhí)行下面的rule,可以改為stop
</rule>
<rule>
condition  = max(var(size1),var(size2)) < 2kb
show       = no
</rule>
</rules>
</link>
</links>
<ideogram>                #這是定義染色體相關(guān)參數(shù)的標(biāo)簽,以</ideogram>結(jié)尾,其中包括要設(shè)置的參數(shù)
<spacing>                 #定義染色體間隙寬度的標(biāo)簽,以</spacing>,其中包括要設(shè)置的參數(shù)
default = 0.005r          #r指的是圓的周長(zhǎng),設(shè)置0.5%圓的周長(zhǎng)為間隙
#<pairwise hsY;hs1>       #可以用<pairwise>標(biāo)簽特別指定某些染色體的間隙(用的是ID),因?yàn)樵诖蠖鄶?shù)文章中,都會(huì)留一 個(gè)大間隙,來(lái)放label
#spacing = 20r            #這里20r表示是相對(duì)default = 0.005r的20倍,也就是10%的圓的周長(zhǎng)
#</pairwise>              #標(biāo)簽都要以</>結(jié)尾,
</spacing>                #間隙定義結(jié)束,下面是對(duì)染色體樣式的調(diào)整
radius           = 0.90r  #輪廓的位置,這里的r指的是半徑,由圓心到圓周上范圍依次是0-1r,,超出部分將不再顯示。
thickness        = 20p    #染色體整體的寬度,這里p指的是像素大小,也可以用r表示,1r=1500p
fill             = yes    #是否為染色體填充顏色,如果為yes,自動(dòng)用第七列定義的顏色著色
stroke_color     = dgrey  #染色體邊框的顏色,支持多種格式的輸入,如:red或255,182,106
stroke_thickness = 2p     #染色體邊框的粗細(xì)
show_label       = yes        #選擇yes表示要顯示label
label_font       = default    # 字體可以再 etc/fonts.conf 查看所有,默認(rèn)為CMUBright-Roman
label_radius     = dims(image,radius)-60p  #使用dims()獲取圖像半徑的大小,從而定位染色體標(biāo)簽的位置,也可以直接定義1.075r
label_size       = 30         #字體的大小
label_parallel   = yes        #將Label的方向設(shè)置為與染色體平行
</ideogram>               #定義染色體屬性的標(biāo)簽結(jié)束
show_ticks          = yes  #選擇yes表示要顯示刻度線
show_tick_labels    = yes  #選擇yes表示要顯示刻度線的數(shù)值
#定義刻度線的整體位置與形狀
<ticks>                    #刻度線的轉(zhuǎn)用標(biāo)簽,但凡是復(fù)數(shù)出現(xiàn)的,其下面的參數(shù)都表示全局參數(shù),像下面的<tick>單數(shù)形式,都表示局部參數(shù)
radius           = 1r      #刻度線的位置,1r為最遠(yuǎn)距離,超過(guò)1r不再顯示
color            = black
thickness        = 2p
multiplier       = 1e-6    #把刻度線標(biāo)簽(bp)縮小10萬(wàn)倍顯示
format           = %d      #然后以整數(shù)的形式標(biāo)記在刻度線上
#定義小的刻度線,且不顯示數(shù)值
<tick>
spacing        = 5u        #最開始我們定義1u = 1000000,表示每500w bp顯示一個(gè)小刻度線
size           = 10p
show_label     = no        #由于小的刻度線展示出來(lái)太密集,因此我們no不展示,默認(rèn)不展示
</tick>
#定義大的刻度線,顯示數(shù)值
<tick>
spacing        = 25u
size           = 15p
show_label     = yes
label_size     = 20p
label_offset   = 10p      #設(shè)置數(shù)值和刻度線之間的間隔
format         = %d
</tick>
</ticks>
#-----------------------------------------------------------------------------------
#下面是每次都要復(fù)制粘貼上去的,他們屬于circos自帶的配置文件,用于調(diào)用顏色,距離,報(bào)錯(cuò)等信息
<image>                    #注意路徑
<<include etc/image.conf>> #注意引用外部配置文件需要使用<<#>>
</image>
<<include etc/colors_fonts_patterns.conf>> 
#官方?jīng)]有提到下面的文件,但是沒(méi)有這個(gè)文件會(huì)報(bào)錯(cuò),所以還是加上去
<<include etc/housekeeping.conf>>
  • Circos的配色、布局都是門學(xué)問(wèn),真的感覺(jué)學(xué)無(wú)止境,下面一步要做的就是從我們自己的數(shù)據(jù)中如何整理出來(lái)官方給的格式。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,702評(píng)論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,615評(píng)論 3 419
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,606評(píng)論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,044評(píng)論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,826評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,227評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,307評(píng)論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,447評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,992評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,807評(píng)論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,001評(píng)論 1 370
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,550評(píng)論 5 361
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,243評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,667評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,930評(píng)論 1 287
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,709評(píng)論 3 393
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,996評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容