久久产久射久精国久品在线看_免费试看30分钟保湿套装_伊犁直飞2025直达入口

 分类: 文献解读

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();

最终绘图效果如下图:

以上就是一个使用数据生成多个环形组合图的过程。我们还可以根据自己的需要添加更多的类似图形。只需要保证数据的结构一致即可。同样,也可以以上面的代码为模板,把其它数据代换进去生成全新图片。

 

如果您对这个绘图还有其他问题,欢迎点击下方按钮联系我们,我们将免费为您设计文章思路方案。

 

 

最近文章
桦南县| 华安县| 松溪县| 洛阳市| 香港| 潮州市| 芜湖市| 义马市| 巩义市| 尖扎县|