有图有案例,看大神是如何在非Perl语言环境下绘制circos图

Posted 安诺基因

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有图有案例,看大神是如何在非Perl语言环境下绘制circos图相关的知识,希望对你有一定的参考价值。

Circos是基于Perl语言开发的自由可视化软件,最大特色就是可绘制输出圈图,主要用于基因组序列相关数据的可视化。圈图不仅会让数据更直观,而且能为文章增色不少。但是但是但是,由于Circos是基于Perl语言开发的,大大限制了其大众化的应用,此外安装及使用Circos,需要严格的配置文件,这又增加了大家使用Circos的难度。


难道就没有其他方法可以绘制圈图了吗?哈哈~当然有。今天小编将为大家介绍一个简单实用,可在R语言环境下使用的R包:Circlize

 

和常规的R包一样,由于这个包已经被提交到CRAN上,可用以下的脚本安装:

install.packages("circlize")


在使用这个包时,主要有以下几个步骤:


设置画板:circos.par();通过参数设置,可改变图中圈与圈之间的距离;根据绘图需求的不同需求设置起始角度。

将每个圈分块:circos.initialize();每个块为一个单独的画图区域,可以设置每个块的横坐标范围,及每个块的名字。

初始化绘图区域:circos.trackPlotRegion() 设置纵坐标范围等。

绘图:circos.rect();circos.link();circos.axis();circos.text();circos.

trackHist();circos.trackPoints()等。

循环第三步与第四步的操作。

绘图结束:circos.clear()。


文末有Circlize的使用教程哦~


下面用两个简单的例子来做个示范:

1

显示在不同疾病中差异表达的基因的关系


数据格式

有图有案例,看大神是如何在非Perl语言环境下绘制circos图

上图为两列的dataframe数据,其中第一列为癌症,第二列为在相应癌症中差异表达的基因名称

                           

绘制过程

1、设置画板

circos.par(start.degree=90,track.margin=c(0.005,0.005)),起始为90度,每个圈之间的距离为0.01。

2、每个圈分块

circos.initialize((factors= factor(cancer, levels = cancer), xlim = xlim)):cancer中为九个癌症名,xlim为每个癌症对应的差异基因数,以此决定每个块的长度。

3、初始化绘图区

用于绘制基因组数据):circos.genomicTrackPlotRegion(ylim =c(0,1),bg.border

NA,track.height = 0.1)设置纵坐标为0-1

4、为每个块标上癌症名字

circos.text(xlim[cancer[i],2]/2, 1, sector.index=cancer[i],labels=cancer[i],facing=

"inside")

5、增加一圈新的绘图区

circos.genomicTrackPlotRegion()

6、绘制基因名

circos.genomicPosTransformLines(symbol1,posTransform=posTransform.default, track.height =0.04,lwd=0.05,direction ='outside')。

7、增加新一圈的绘图区

circos.trackPlotRegion(ylim= c(0, 1), bg.border = NA, track.height = 0.1)。

8、绘制矩形,设置不同颜色区分癌症

circos.rect(0, 0, xlim[cancer[i],2], 1, sector.index = cancer[i],border = NA,col=

cancer.col[i])。

9、连接共同基因

将不同癌症中共同出现的基因连接,并按照不同的出现次数,设置不同的颜色加以区分:circos.link(temp[m,1],as.numeric(temp[m,2]),temp[n,1],as.numeric

(temp[n,2]),col=col)。

10、绘图结束

circos.clear()。

结果展示


有图有案例,看大神是如何在非Perl语言环境下绘制circos图

2

可视化各癌症差异表达外显子在基因组上的分布情况


数据格式


有图有案例,看大神是如何在非Perl语言环境下绘制circos图


各列依次为:基因,染色体,外显子起始位置,外显子终止位置,差异表达值


绘图过程


1

设置画板:circos.par(start.degree=87,track.margin=c(0.005,

0.005)) 起始角度为87,空留一小块做标签

2

设置横坐标:circos.initialize(factors= factor(c(chromosome,"M"), levels = c(chromosome,"M")),xlim = xlim)。

3

设置纵坐标circos.trackPlotRegion(ylim= c(0, 1), bg.border = NA, track.height = 0.1)。

4

绘制长方形circos.rect(d2[i,2], 0, d2[i, 3], 0.4, sector.index = chr,col = col[i], border = NA)。

5

添加染色体号:circos.text(mean(chr.xlim),1.2, labels = gsub

("chr", "", chr),sector.index = chr, cex= 0.8)

6

初始化画图区:circos.trackPlotRegion()

7

绘制长方形:circos.rect(xlim["M",1], 0, xlim["M", 2], 1, col =

"purple3",border = NA);上调的为红色,下调的为绿色

8

对每类型癌症,重复步骤6,7

9

添加标签legend("topright",legend=c("pcg","lncRNA",

"pseudogene"),fill=c("purple3","royalblue4","yellow3"),bty="n",cex=0.7)

10

绘图结束:circos.clear()


结果展示

      


      

看了小编今天分享的R包Circlize的用法后,如此高端大气上档次的图离你的论文不在遥远哦~动动手指就能升级文章颜值,赶紧行动起来~


Circlize安装链接:https://cran.r-project.org/web/packages/circlize/index.html

Circlize使用教程:https://cran.r-project.org/web/packages/circlize/circlize.pdf


感兴趣的其他文章:




以上是关于有图有案例,看大神是如何在非Perl语言环境下绘制circos图的主要内容,如果未能解决你的问题,请参考以下文章

Hyper-V数据文件丢失解决方案(有图有真相)

C#项目间循环引用的解决办法,有图有真相

Qt中QGraphics类坐标映射关系详解(有图有真相,实例讲解)

打开豆瓣网的时候,网页显示不正常,文字蓝字白底的。请问是啥原因。有图有真相。

TortoiseSVN如何使用啊,最好是有图有真相,小弟初来炸到,分数不够,敬请谅解!

Spring MVC的执行流程(有图有真相)