R語(yǔ)言circlize包畫(huà)一幅好看的弦圖~完整示例數(shù)據(jù)和代碼

前些天在網(wǎng)上看到的代碼穆咐,他最終的出圖如下

image.png

這份教程的鏈接地址是 https://www.royfrancis.com/beautiful-circos-plots-in-r/

但是他沒(méi)有公布完整的數(shù)據(jù)贬媒,只是提到了數(shù)據(jù)的格式快耿,我試著按照他提到的數(shù)據(jù)自己模擬了一份數(shù)據(jù)

首先是最外圈染色體的長(zhǎng)度信息

因?yàn)橹挥腥龡l染色體鳖目,數(shù)據(jù)不多,直接通過(guò)代碼輸入

circos.initialize(factors=c("genome_1","genome_2","genome_3"),
                  xlim=matrix(c(0,0,0,100,120,110),ncol=2))
第二圈的覆蓋度信息
image.png
第三圈的GC含量
image.png
第四圈的基因名稱
image.png
第五圈共線性的片段
image.png
image.png

教程中提到了兩套代碼锰悼,一套是不帶參數(shù)調(diào)整細(xì)節(jié)

完整代碼如下


'''
### 弦圖
### 參考鏈接
### https://www.royfrancis.com/beautiful-circos-plots-in-r/
'''
library(readxl)
cov<-read_excel("beautiful_plot/circlize/example_df.xlsx",
                sheet = "Sheet1")
cov
gc<-read_excel("beautiful_plot/circlize/example_df.xlsx",
               sheet = "Sheet2")
gc

ann<-read_excel("beautiful_plot/circlize/example_df.xlsx",
                sheet = "Sheet3")
ann

nuc1<-read_excel("beautiful_plot/circlize/example_df.xlsx",
                 sheet = "Sheet4")
nuc1

nuc2<-read_excel("beautiful_plot/circlize/example_df.xlsx",
                 sheet = "Sheet5")
nuc2


library(circlize)


col_text <- "grey40"
#circos.par("track.height"=0.8,gap.degree=5,cell.padding=c(0,0,0,0))
circos.initialize(factors=c("genome_1","genome_2","genome_3"),
                  xlim=matrix(c(0,0,0,100,120,110),ncol=2))
circos.track(ylim=c(0,1),panel.fun=function(x,y) {
  chr=CELL_META$sector.index
  xlim=CELL_META$xlim
  ylim=CELL_META$ylim
  circos.text(mean(xlim),mean(ylim),chr)
})

circos.track(track.index = get.current.track.index(),
             panel.fun = function(x, y) {
               circos.axis(h="top")
               })

circos.genomicTrack(data=cov,
                    panel.fun=function(region,value,...) {
                      circos.genomicLines(region,value)
})
# coverage y axis
circos.yaxis()

circos.track(factors=gc$chr,
             x=gc$start,
             y=gc$value1,
             panel.fun=function(x,y) {
               circos.lines(x,y)
               })
# gc y axis
circos.yaxis()

circos.genomicLabels(ann,labels.column=5)
circos.genomicLink(nuc1,nuc2)
circos.clear()

出圖

image.png
還有一套代碼是帶有參數(shù)對(duì)圖進(jìn)行美化的

'''
### 弦圖
### 參考鏈接
### https://www.royfrancis.com/beautiful-circos-plots-in-r/
'''

library(readxl)
cov<-read_excel("beautiful_plot/circlize/example_df.xlsx",
                sheet = "Sheet1")
cov
gc<-read_excel("beautiful_plot/circlize/example_df.xlsx",
               sheet = "Sheet2")
gc

ann<-read_excel("beautiful_plot/circlize/example_df.xlsx",
                sheet = "Sheet3")
ann

nuc1<-read_excel("beautiful_plot/circlize/example_df.xlsx",
                 sheet = "Sheet4")
nuc1

nuc2<-read_excel("beautiful_plot/circlize/example_df.xlsx",
                 sheet = "Sheet5")
nuc2


library(circlize)

col_text <- "grey40"
circos.par("track.height"=0.8,gap.degree=5,cell.padding=c(0,0,0,0))
circos.initialize(factors=c("genome_1","genome_2","genome_3"),
                  xlim=matrix(c(0,0,0,100,120,110),ncol=2))
circos.track(ylim=c(0,1),panel.fun=function(x,y) {
  chr=CELL_META$sector.index
  xlim=CELL_META$xlim
  ylim=CELL_META$ylim
  circos.text(mean(xlim),mean(ylim),chr,cex=0.5,col=col_text,
              facing="bending.inside",niceFacing=TRUE)
},bg.col="grey90",bg.border=F,track.height=0.06)

brk <- c(0,20,40,60,80,100,120)
circos.track(track.index = get.current.track.index(), 
             panel.fun = function(x, y) {
               circos.axis(h="top",
                           major.at=brk,
                           labels=brk,
                           labels.cex=0.4,
                           col=col_text,
                           labels.col=col_text,
                           lwd=0.7,
                           labels.facing="clockwise")
               },
             bg.border=F)
circos.genomicTrack(data=cov,
                    panel.fun=function(region,value,...) {
                      circos.genomicLines(region,
                                          value,
                                          type="l",
                                          col="grey50",
                                          lwd=0.6)
                      circos.segments(x0=0,
                                      x1=120,
                                      y0=100,
                                      y1=100,
                                      lwd=0.6,
                                      lty="11",
                                      col="grey90")
                      circos.segments(x0=0,
                                      x1=120,
                                      y0=150,
                                      y1=150,
                                      lwd=0.6,
                                      lty="11",
                                      col="grey90")
  #circos.segments(x0=0,x1=max(ref$V2),y0=500,y1=500,lwd=0.6,lty="11",col="grey90")
                      },
  track.height=0.08,
  bg.border=F)
circos.yaxis(at=c(100,150),
             labels.cex=0.25,
             lwd=0,
             tick.length=0,
             labels.col=col_text,
             col="#FFFFFF")

circos.track(factors=gc$chr,
             x=gc$start,
             y=gc$value1,
             panel.fun=function(x,y) {
               circos.lines(x,y,col="grey50",lwd=0.6)
               circos.segments(x0=0,
                               x1=120,
                               y0=30,
                               y1=30,
                               lwd=0.6,
                               lty="11",
                               col="grey90")
               circos.segments(x0=0,
                               x1=120,
                               y0=50,
                               y1=50,
                               lwd=0.6,
                               lty="11",
                               col="grey90")
               circos.segments(x0=0,
                               x1=150,
                               y0=70,
                               y1=70,
                               lwd=0.6,
                               lty="11",
                               col="grey90")
               },
             ylim=c(30,70),
             track.height=0.08,
             bg.border=F)
# gc y axis
circos.yaxis(at=c(30,50,70),
             labels.cex=0.25,
             lwd=0,
             tick.length=0,
             labels.col=col_text,
             col="#FFFFFF")

circos.genomicLabels(ann,
                     labels.column=5,
                     cex=0.25,
                     col=col_text,
                     line_lwd=0.5,
                     line_col="grey80",
                     side="inside",
                     connection_height=0.05,
                     labels_height=0.04)
rcols <- scales::alpha(ifelse(sign(nuc1$start-nuc1$end)!=sign(nuc2$start-nuc2$end),"#f46d43","#66c2a5"),alpha=0.4)
rcols
circos.genomicLink(nuc1,nuc2,col=rcols,border=NA)

circos.clear()
image.png

這個(gè)表示覆蓋度和gc含量的折線數(shù)據(jù)比較少漾月,看起來(lái)可能不太美觀,換成自己的數(shù)據(jù)多了以后就好看了

示例數(shù)據(jù)和代碼可以直接在公眾號(hào)后臺(tái)留言 20210617獲取

歡迎大家關(guān)注我的公眾號(hào)

小明的數(shù)據(jù)分析筆記本

小明的數(shù)據(jù)分析筆記本 公眾號(hào) 主要分享:1瘦赫、R語(yǔ)言和python做數(shù)據(jù)分析和數(shù)據(jù)可視化的簡(jiǎn)單小例子辰晕;2、園藝植物相關(guān)轉(zhuǎn)錄組學(xué)确虱、基因組學(xué)含友、群體遺傳學(xué)文獻(xiàn)閱讀筆記;3校辩、生物信息學(xué)入門(mén)學(xué)習(xí)資料及自己的學(xué)習(xí)筆記窘问!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市宜咒,隨后出現(xiàn)的幾起案子惠赫,更是在濱河造成了極大的恐慌,老刑警劉巖故黑,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件儿咱,死亡現(xiàn)場(chǎng)離奇詭異庭砍,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)混埠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)怠缸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人钳宪,你說(shuō)我怎么就攤上這事揭北。” “怎么了使套?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵罐呼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我侦高,道長(zhǎng)嫉柴,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任奉呛,我火速辦了婚禮计螺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瞧壮。我一直安慰自己登馒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布咆槽。 她就那樣靜靜地躺著陈轿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪秦忿。 梳的紋絲不亂的頭發(fā)上麦射,一...
    開(kāi)封第一講書(shū)人閱讀 48,954評(píng)論 1 283
  • 那天,我揣著相機(jī)與錄音灯谣,去河邊找鬼潜秋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛胎许,可吹牛的內(nèi)容都是我干的峻呛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼辜窑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼钩述!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起穆碎,我...
    開(kāi)封第一講書(shū)人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤切距,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后惨远,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體谜悟,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年北秽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了葡幸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贺氓,死狀恐怖蔚叨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情辙培,我是刑警寧澤蔑水,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站扬蕊,受9級(jí)特大地震影響搀别,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尾抑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一歇父、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧再愈,春花似錦榜苫、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至抗悍,卻和暖如春驹饺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背檐春。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工逻淌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疟暖。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓卡儒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親俐巴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子骨望,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

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