1

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

我设法到达: 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

Region 是一个有 205 个观察值和 7 个变量的数据框:染色体、起始位置、结束位置,然后是一些值 value 是一个有 205 个观察值和 2 个变量的数据框:两个数值

我对这种情节完全陌生,因此不胜感激

谢谢

4

1 回答 1

2

region在低级函数中,例如circos.genomicPointsorcircos.genomicLines应该是一个只包含两列(开始位置和结束位置)的数据框。因为诸如circos.genomicPoints一次只对一个染色体起作用的功能,所以没有必要将染色体信息放在region.

一个推荐的调用方式是在调用时circos.genomicPoints放入:panel.funcircos.genomicTrackPlotRegion

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是一个自定义函数,将在每个染色体中执行。regionvalueinpanel.fun是从 中提取的“当前染色体”中的相应数据帧bed

circos.genomicPoints如果您想通过调用outside来微调您的绘图circos.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, ...)
}
于 2014-09-02T20:17:00.927 回答