有图有案例,看大神是如何在非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的使用教程哦~)
下面用两个简单的例子来做个示范:
显示在不同疾病中差异表达的基因的关系
数据格式
上图为两列的dataframe数据,其中第一列为癌症,第二列为在相应癌症中差异表达的基因名称。
绘制过程
circos.par(start.degree=90,track.margin=c(0.005,0.005)),起始为90度,每个圈之间的距离为0.01。
circos.initialize((factors= factor(cancer, levels = cancer), xlim = xlim)):cancer中为九个癌症名,xlim为每个癌症对应的差异基因数,以此决定每个块的长度。
用于绘制基因组数据):circos.genomicTrackPlotRegion(ylim =c(0,1),bg.border
= NA,track.height = 0.1)设置纵坐标为0-1。
circos.text(xlim[cancer[i],2]/2, 1, sector.index=cancer[i],labels=cancer[i],facing=
"inside")
circos.genomicTrackPlotRegion()。
circos.genomicPosTransformLines(symbol1,posTransform=posTransform.default, track.height =0.04,lwd=0.05,direction ='outside')。
circos.trackPlotRegion(ylim= c(0, 1), bg.border = NA, track.height = 0.1)。
circos.rect(0, 0, xlim[cancer[i],2], 1, sector.index = cancer[i],border = NA,col=
cancer.col[i])。
将不同癌症中共同出现的基因连接,并按照不同的出现次数,设置不同的颜色加以区分:circos.link(temp[m,1],as.numeric(temp[m,2]),temp[n,1],as.numeric
(temp[n,2]),col=col)。
circos.clear()。
可视化各癌症差异表达外显子在基因组上的分布情况
数据格式
各列依次为:基因,染色体,外显子起始位置,外显子终止位置,差异表达值
绘图过程
设置画板:circos.par(start.degree=87,track.margin=c(0.005,
0.005)) 起始角度为87,空留一小块做标签。
设置横坐标:circos.initialize(factors= factor(c(chromosome,"M"), levels = c(chromosome,"M")),xlim = xlim)。
设置纵坐标circos.trackPlotRegion(ylim= c(0, 1), bg.border = NA, track.height = 0.1)。
绘制长方形circos.rect(d2[i,2], 0, d2[i, 3], 0.4, sector.index = chr,col = col[i], border = NA)。
添加染色体号:circos.text(mean(chr.xlim),1.2, labels = gsub
("chr", "", chr),sector.index = chr, cex= 0.8)。
初始化画图区:circos.trackPlotRegion()。
绘制长方形:circos.rect(xlim["M",1], 0, xlim["M", 2], 1, col =
"purple3",border = NA);上调的为红色,下调的为绿色。
对每类型癌症,重复步骤6,7。
添加标签legend("topright",legend=c("pcg","lncRNA",
"pseudogene"),fill=c("purple3","royalblue4","yellow3"),bty="n",cex=0.7)。
绘图结束: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图的主要内容,如果未能解决你的问题,请参考以下文章
Qt中QGraphics类坐标映射关系详解(有图有真相,实例讲解)
打开豆瓣网的时候,网页显示不正常,文字蓝字白底的。请问是啥原因。有图有真相。