使命召唤ol吃鸡模式|使命召唤ol掌上app

【R語言】利用RCricos繪制簡單圈圖

Circos圖是在基因組相關的分析結果展示中非常常見的一類圖型。由于Circos圖中展示的信息量大,圖形十分美觀,很多文章中都會繪制類似的圖形。從圖形的內容來看,Circos圖實際是將多個類型的圖片,包括散點圖、直方圖、折線圖、熱圖等,經過變形以后疊加顯示在染色體上。本質上是多個圖形的組合。

在R語言中,RCircos這個軟件包可以實現快速生成Circos圖片。接下來,我們就來看看怎樣用R來繪制圈圖。

1、基礎繪圖

# 加載RCicos,如果第一次使用,需要先安裝 install.packages('RCircos')# 讀取R包 library(RCircos)# 導入內建人類染色體數據 data(UCSC.HG38.Human.CytoBandIdeogram)

# 數據內容如上圖;第一列?染色體編號;第二列?染色體片段起始位點;第三列?染色體片段結束位點;第四列?染色體片段編號;第五列?染色體片段顏色
# 這個數據是RCicos內置的人類染色體信息,第四列和第五列信息用于展示染色體的核型。可以省略。

#?設置染色體數據 cyto.info?<-?UCSC.HG38.Human.CytoBandIdeogram

RCircos.Set.Core.Components(cyto.info,?chr.exclude=NULL,tracks.inside=10,?tracks.outside=0?)
# chr.exclude=NULL;??設置不顯示的染色體,如?c(1,3)??????????
# tracks.inside=10;??設置內部環形個數
# tracks.outside=0;???設置外部環形個數??

#?繪制染色體圖形,默認方法顯示染色體名稱。 RCircos.Set.Plot.Area()????? RCircos.Chromosome.Ideogram.Plot()?

這樣僅包含染色體的圈圖就生成了:

2、繪制包含數據的圖形

#?導入內建人類染色體數據 data(UCSC.HG19.Human.CytoBandIdeogram); #設置不顯示的染色體,如?c(1,3)??? chr.exclude?<-?NULL;? #設置染色體數據 cyto.info?<-?UCSC.HG19.Human.CytoBandIdeogram;? #設置內部環形個數 tracks.inside?<-?10;? #設置外部環形個數 tracks.outside?<-?0;? #?導入上面四個基本參數 RCircos.Set.Core.Components(cyto.info,?chr.exclude,?tracks.inside,?tracks.outside); #?列出所有繪圖參數 RCircos.List.Plot.Parameters() #?定義要生成的圖像文件 pdf(file="RCircosDemoHumanGenome",?height=8,?width=8,?compress=TRUE); RCircos.Set.Plot.Area(); #?height和width指定生成圖片的長和寬,compress指定生成的圖片是否需要壓縮 #?繪制染色體圖形 RCircos.Chromosome.Ideogram.Plot();

3、染色體上添加基因名稱與連線

# 加載內置的RCircos.Gene.Label.Data數據集

data(RCircos.Gene.Label.Data);

 

#?數據內容如上圖,第一列?染色體編號,需要與第一步導入的染色體數據一致;第二列?基因在染色體片段起始位點;第三列?基因在染色體片段結束位點;第四列?基因名

#?指定內容在內側的環形還是外側的環形生成 side?<-?"in";#?指定內容在第幾個環形生成 track.num?<-?1;#?繪圖 RCircos.Gene.Connector.Plot(RCircos.Gene.Label.Data,?track.num,?side); #?在染色體上添加基因名稱,?指定內容在第幾個環形生成 name.col?<-?4;#?指定基因名在數據的第幾列 track.num?<-?2;#?繪圖 RCircos.Gene.Name.Plot(RCircos.Gene.Label.Data,?name.col,track.num,?side);

4、添加熱圖類型的環形

# 加載內置的RCircos.Heatmap.Data數據集
data(RCircos.Heatmap.Data);

#?這個數據集中是6個不同樣本的基因表達量數據,數據內容如上圖,第一列?染色體編號,需要與第一步導入的染色體數據一致;第二列?基因在染色體片段起始位點;第三列?基因在染色體片段結束位點;第四列?基因名;第五列及以后?基因在不同樣本中的表達量

#?指定以第6列數據生成熱圖 data.col?<-?6; #?指定內容在第5個環形生成 track.num?<-?5;#?指定內容在內側的環形生成 side?<-?"in";#?繪圖 RCircos.Heatmap.Plot(RCircos.Heatmap.Data,?data.col,?track.num,?side);

5、添加散點圖類型的環形

#?加載內置的RCircos.Scatter.Data數據集
data(RCircos.Scatter.Data);

#?這個數據集是拷貝數變異的數據,數據內容如上圖,第一列?染色體編號,需要與第一步導入的染色體數據一致;第二列?突變位點在染色體片段起始位點;第三列?突變位點在染色體片段結束位點;第四列?突變位點拷貝數;第五列?突變平均置信度

#?指定以第5列數據圖形中散點縱坐標 data.col?<-?5;#?指定圖形在第6個環形生成 track.num?<-?6;#?指定圖形在內側環形生成 side?<-?"in";#?指定數據大于1的點以紅色顯示,小于數據1的點以藍色顯示 by.fold?<-?1;#?繪圖 RCircos.Scatter.Plot(RCircos.Scatter.Data,?data.col,track.num,?side,?by.fold);

6、添加折線圖類型的環形

# 加載內置的RCircos.Line.Data數據集
data(RCircos.Line.Data);

# 由于這個數據集的染色體編號與第一步導入的染色體數據不一致,需要在編號前添加chr
RCircos.Line.Data$chromosome?<-?paste(‘chr’,RCircos.Line.Data$chromosome,sep?=?)

#?指定以第5列數據做為圖形中拆線的縱坐標 data.col?<-?5;#?指定圖形在第7個環形生成 track.num?<-?7;#?指定圖形在內側環形生成 side?<-?"in";#?繪圖 RCircos.Line.Plot(RCircos.Line.Data,?data.col,?track.num,?side);

7、添加直方圖類型的環形

# 加載內置的RCircos.Histogram.Data數據集 data(RCircos.Histogram.Data);

#?這個數據集是染色體片段突變頻率的數據,數據內容如上圖,第一列?染色體編號;第二列?染色體片段起始位點;第三列?染色體片段結束位點;第四列?染色體片段突變頻率

#?指定以第4列數據做為圖形中直方的縱坐標 data.col?<-?4;#?指定圖形在第8個環形生成 track.num?<-?8;#?指定圖形在內側環形生成 side?<-?"in";#?繪圖 RCircos.Histogram.Plot(RCircos.Histogram.Data,?data.col,?track.num,?side);

8、添加網絡圖類型的環形

# 加載內置的RCircos.Tile.Data數據集 data(RCircos.Tile.Data);

#?數據內容如上圖,第一列?染色體編號;第二列?需要繪制的網格在染色體片段的起始位點;第三列?需要繪制的網格在染色體片段的結束位點

#?指定圖形在第9個環形生成 track.num?<-?9;#?指定圖形在內側環形生成 side?<-?"in";#?繪圖 RCircos.Tile.Plot(RCircos.Tile.Data,?track.num,?side);

9、添加一個或多個基因間的聯系曲線

# 加載內置的RCircos.Link.Data數據集 data(RCircos.Link.Data);

#?數據內容如上圖,第一列?染色體編號;第二列?聯系位點在染色體片段的起始位點;第三列?聯系位點在染色體片段的結束位點;第四列?聯系位點在所在的另一個染色體編號;第五列?聯系位點在所在的另一個染色體片段的起始位點;第六列?聯系位點在所在的另一個染色體片段的結束位點

#?指定圖形在第11個環形生成 track.num?<-?11;#?繪圖 RCircos.Link.Plot(RCircos.Link.Data,?track.num,?TRUE);

#?加載內置的RCircos.Ribbon.Data數據集 data(RCircos.Ribbon.Data);

#?繪圖 RCircos.Ribbon.Plot(ribbon.data=RCircos.Ribbon.Data,?track.num=11,?by.chromosome=FALSE,?twist=FALSE); #?繪圖完成之后關閉圖形設備,保存圖片。可以在工作目錄下找到生成的圖片,默認是PDF格式? dev.off();

最終繪圖效果如下圖:

以上就是一個使用數據生成多個環形組合圖的過程。我們還可以根據自己的需要添加更多的類似圖形。只需要保證數據的結構一致即可。同樣,也可以以上面的代碼為模板,把其它數據代換進去生成全新圖片。

 

最近文章
使命召唤ol吃鸡模式