2014-09-02 133 views
1

我试图做一个类似于基因表达图的圆形图。 我发现circlize包中的R能做到这一点,我试着去遵循这个http://cran.r-project.org/web/packages/circlize/vignettes/genomic_plot.pdf在R中circlize做一个圆形图

我设法去:6.创建绘图区域

但是当我键入

circos.genomicPoints(Region, value, numeric.column = c(1,2)) 

我得到这个错误:

Error in get.cell.meta.data("sector.index") : 
Length of `sector.index` should only be 1. 

当我键入

circos.genomicLines(Region, value, numeric.column = c(1, 2)) 

我得到这个错误:

Error in region[[1]] + region[[2]] : 
    non-numeric argument to binary operator 

区域与205个观察和7个变量的数据帧:染色体,开始位置,结束位置,然后一些值 值是与205个观测的数据帧和2个变量:这两个数值

林完全新的这种情节,所以任何帮助表示赞赏

感谢

+0

您需要提供更多的细节。到目前为止,所有事情都能正确地绘制出来吗你是否按照第6节所写的那样完成了功能? – 2014-09-02 11:40:29

+0

是的,到目前为止所有事情都能正常工作和绘制出来 – user2335015 2014-09-02 12:02:01

+0

由于引用的小插图不提供'data'或'region',(更不用说在执行提供的代码时弹出多个警告和错误),可能会有小插曲中的错误和/或您构建自己的“区域”的方式。 – 2014-09-02 14:45:35

回答

2

region中的低级函数(如circos.genomicPointscircos.genomicLines)应该是仅包含两列(起始位置和结束位置)的数据帧。由于circos.genomicPoints等功能一次只能用于一条染色体,因此没有必要将染色体信息放入region

一个推荐的方法来调用circos.genomicPoints是主叫circos.genomicTrackPlotRegion当投入panel.fun

bed # your data frame which is bed-file format 
circos.initializeWithIdeogram() 
circos.genomicTrackPlotRegion(bed, panel.fun = function(region, value, ...) { 
    circos.genomicPoints(region, value, ...) 
}) 

在上面的例子中的代码,panel.fun是将在每一个染色体被执行的自定义功能。 regionvalue in panel.fun是从bed提取的'当前染色体'中对应的数据帧。

如果你想通过调用circos.genomicPointscircos.genomicTrackPlotRegion微调您的情节,你需要建立你的regionvalue变量,也不要忘记设置sector.indextrack.index指定你想放哪条染色体和跟踪图形:

for(chr in chromosomes) { 
    region = bed[bed[[1]] == "chr", 2:3] 
    value = bed[bed[[1]] == "chr", some_column_index] 
    circos.genomicPoints(region, value, sector.index = chr, ...) 
} 
+0

顺便说一句,'genomic_plot.pdf'vignette中的一些示例代码仅用于演示,但无法执行。这是因为绘制一个基因组级别的阴谋总是需要更多的代码,如果将所有代码放在小插曲中,它看起来会很糟糕。基因组循环功能的使用与使用一般循环功能非常相似,它们背后有相同的想法。用户首先阅读主要插图(circlize.pdf)会更好。用户还可以访问[http://jokergoo.github.io/circlize/](http://jokergoo.github.io/circlize/)获取可执行示例。 – 2014-09-02 21:00:15