R也可以画出类似circos的图了,这是最新的OmicCircos给我们带来的新功能。
OmicCircos与circos相同的是,它可以画出连线(link), 2D图象(2D Tracks)[这其中包括scatter plots, line plots, histograms, heatmaps, polygons, boxplots]。但是遗憾的是,它不能绘制ideograms,glyph tracks。当然也不能严格的说就完全不能绘制ideograms,只是绘制的效果差强人意。
如果OmicCircos不是重写circos,而是直接载入circos的内核代码的话,在美感上就会更好一些,也更容易为人所接受。
但是,直接从R中使用circos,免去了我们学习circos数据结构的过程,可以让熟悉R的人快速上手,画出和circos类似的效果,应该是这个包最大的贡献。同时,我们可以得到矢量化的图象,非常适合文章的发表。
好了,我们通过一个实例来看看OmicCircos的效果吧。
> options(stringsAsFactors = FALSE) > library(OmicCircos) > set.seed(1234) > > ## initial > seg.num <- 10 > ind.num <- 20 > seg.po <- c(20:50) > link.num <- 10 > link.pg.num <- 10 > > sim.out <- sim.circos(seg=seg.num, po=seg.po, ind=ind.num, link=link.num, + link.pg=link.pg.num) > > seg.f <- sim.out$seg.frame > seg.v <- sim.out$seg.mapping > link.v <- sim.out$seg.link > link.pg.v <- sim.out$seg.link.pg > seg.num <- length(unique(seg.f[,1])) > > ## select segments > seg.name <- paste("chr", 1:seg.num, sep="") > db <- segAnglePo(seg.f, seg=seg.name) > > colors <- rainbow(seg.num, alpha=0.5) > par(mar=c(2, 2, 2, 2)) > > plot(c(1,800), c(1,800), type="n", axes=F, xlab="", ylab="", main="") > circos(R=400, type="chr", cir=db, col=colors, print.chr.lab=T, W=4, scale=T) > circos(R=360, cir=db, W=40, mapping=seg.v, col.v=8, type="box", B=T, col=colors[1], lwd=0.1, scale=T) > circos(R=320, cir=db, W=40, mapping=seg.v, col.v=8, type="hist", B=T, col=colors[3], lwd=0.1, scale=T) > circos(R=280, cir=db, W=40, mapping=seg.v, col.v=8, type="ms", B=T, col=colors[7], lwd=0.1, scale=T) > circos(R=240, cir=db, W=40, mapping=seg.v, col.v=3, type="h", B=F, col=colors[2], lwd=0.1) > circos(R=200, cir=db, W=40, mapping=seg.v, col.v=3, type="s", B=T, col=colors, lwd=0.1) > circos(R=160, cir=db, W=40, mapping=seg.v, col.v=3, type="b", B=F, col=colors, lwd=0.1) > circos(R=150, cir=db, W=40, mapping=link.v, type="link", lwd=2, col=colors) > circos(R=150, cir=db, W=40, mapping=link.pg.v, type="link.pg", lwd=2, col=colors) |
sample1
这个例子显示了OmicCircos绘制普通2D tracks的能力,比如图中显示的boxplot, hist, barplot, dots等等。
> par(mar=c(2, 2, 2, 2)) > plot(c(1,800), c(1,800), type="n", axes=F, xlab="", ylab="", main="") > > circos(R=400, type="chr", cir=db, col=colors, print.chr.lab=T, W=4, scale=T) > circos(R=360, cir=db, W=40, mapping=seg.v, col.v=8, type="quant90", B=F, col=colors, lwd=0.1, scale=T) > circos(R=320, cir=db, W=40, mapping=seg.v, col.v=3, type="sv", B=T, col=colors[7], lwd=0.1, scale=T) > circos(R=280, cir=db, W=40, mapping=seg.v, col.v=3, type="ss", B=F, col=colors[3], lwd=0.1, scale=T) > circos(R=240, cir=db, W=40, mapping=seg.v, col.v=8, type="heatmap", lwd=3) > circos(R=200, cir=db, W=40, mapping=seg.v, col.v=3, type="s.sd", B=F, col=colors[4], lwd=0.1) > circos(R=160, cir=db, W=40, mapping=seg.v, col.v=3, type="ci95", B=T, col=colors[4], lwd=0.1) > circos(R=150, cir=db, W=40, mapping=link.v, type="link", lwd=2, col=colors) > circos(R=150, cir=db, W=40, mapping=link.pg.v, type="link.pg", lwd=2, col=colors) > > the.col1=rainbow(10, alpha=0.3)[3] > highlight <- c(160, 410, 6, 2, 6, 10, the.col1, the.col1) > circos(R=110, cir=db, W=40, mapping=highlight, type="hl", lwd=2) > > the.col1=rainbow(10, alpha=0.01)[3] > the.col2=rainbow(10, alpha=0.8)[1] > highlight <- c(160, 410, 6, 12, 7, 10, the.col1, the.col2) > circos(R=110, cir=db, W=40, mapping=highlight, type="hl", lwd=2) |
sample2
这个例子显示了OmicCircos绘制一些复杂2D tracks的能力,比如heatmap等等。
PO主手很快,哈哈,文章出没多久就关注了呢 :)
老师,请问为什么我按您的代码运行后图像存为PDF后分辨率跟你给的样图差距很大,请问老师导出图像前怎么处理的?
你是如何保存图像的呢?请使用?pdf来获得帮助吧。
请问这个tool可以用在RNA-seq的下游处理么?
我只知道您说的,DE gene list去分析GO和pathway
这个主要是用于数据的图型化显示,并不是下游处理。
你好,我想请问一个问题,能否非常容易的使用exprs()出来的表达矩阵或者clusterProfiler出来的GO/KEGG相互关系(形式类似于
Pathway,Gene
pathway_a,GFP/HSP/p53
)作为这个包的数据来源,绘制环状的热图和相互关系图,谢谢
这是一个综合应用的问题,并不很简单。你需要先做GO, KEGG的标记,然后再使用OmicCircos.要把数据处理和绘图分为两步走。
谢谢~有机会我试试
您好,我正在用OmicCircos,不知道您有没有发现一个问题就是在23和24 两个seg上面只有type=“chr” 能显示,其他形式的type没办法显示,不知道您有没有相同的问题。 谢谢
联系作者,报告bug.
老师您好,可以把第二个例子的原始数据发给我学习吗?我初步会画了,但是对于每种类型需要怎样的数据整理尚不清楚,谢谢老师
你试着从第一个例子开始直接跑一下。