在理解为什么我不能使用circlize
包在 R 中手动将文本添加到我的 circos 图中时遇到问题。
(我的主要目标是circlize
使用自定义代码来说明循环基因组中的基因顺序。我知道有绘制基因组的函数,但我想制作自己的管道。)
我已经按照此处提供的示例对我的代码进行了建模(第 1.2 节“快速浏览”)。
基本上,我首先在第一条轨道中绘制扇区(这里是基因)。在第一个磁道中,只有 2 个扇区应该着色(红色和橙色);其余的应该是灰色的。然后我尝试将文本标签(扇区/基因名称)添加到这些彩色扇区,但我得到了错误:
Error: 'circos.text' can only be used after the plotting region been created.
帮助表示赞赏!并提前感谢。:3
~ 杰特
这是说明我的问题的代码。
library(circlize); library(data.table); library(tidyverse)
circos.clear()
# Dummy data.table to test colours for different tracks (1 or 2) for
# different genes and strands.
chromDT <- data.table(
gene=LETTERS[1:6],
strand=c('+', '+', '-', '-', '-', '-'),
end=c(10, 25, 50, 55, 100, 2),
ht1=c(0.1, 0.1, 0.05, 0.05, 0.05, 0.05),
ht2=c(0.05, 0.05, 0.1, 0.1, 0.1, 0.1),
col1=c('red', 'orange', 'grey50', 'grey50', 'grey50', 'grey50'),
col2=c('grey50', 'grey50', 'green', 'blue', 'purple', 'hotpink')
)
# Circle margins
circ_marg <- c(0.5,0.5, 0.5,0.5)
# Genes on the plus and negative strand, as vector
genes_plus <- chromDT[strand=='+']$gene
genes_neg <- chromDT[strand=='-']$gene
# Plot space parameters
circos.par(
gap.degree=0,
track.margin=c(0,0),
cell.padding=c(0.005, 1, 0.005, 1),
circle.margin=circ_marg
)
# Matrix of x limits per sector
xMat <- cbind(rep(0, 6), chromDT$end)
rownames(xMat) <- chromDT$gene
# Intialise
circos.initialize(chromDT$gene, xlim=xMat)
# Track 1 genes (sectors)
circos.track(
ylim=c(0,1),
bg.col=chromDT$col1,
bg.border = 'grey50',
track.height=0.15,
)
# Plotting gene (sector) labels - throws error. :(
circos.text(
x=xMat[genes_plus,] %>% apply(., 1, mean),
y=rep(1, length(genes_plus)),
labels= genes_plus,
track.index = 1,
sector.index = genes_plus,
)