使用自动绘图和ensdb成绩单时,是否有可能超越R包ggbio中的x轴范围?

我正在尝试使用ggbio绘制基因转录本。我想绘制一个非常特定的范围,使其与我的ggplot2图匹配。问题是我的示例图最终的范围为133,567,500-133,570,000,而与GRange无关,无论我是否指定xlim。

此示例应仅绘制一小部分内含子(细箭头线),而绘制其间的完整2个外显子和内含子。我相信自动绘图功能可以绘制出整个范围内的一个或多个成绩单,并扩大范围以适应该范围。

  library(EnsDb.Hsapiens.v86)
  library(ggbio)
  ensdb <- EnsDb.Hsapiens.v86
  mut<-GRanges("10",IRanges(133568909,133569095))
  gene <- autoplot(ensdb,which=mut,names.expr="gene_name",xlim=c(133568909,133569095))
  gene.gg <- gene@ggplot
  png("test_gene_plot_5.png")
    gene.gg
  dev.off()

有什么办法可以超越它吗?我查看了自动绘图的手册页,无法缩小可以解决该问题的选项。其他人已经说过使用xlim,但这似乎并没有改变

我喜欢ggbio,因为它可以使ggplot2对象与其他ggplot2对象一起绘制。我还没有看到使用Gvis等其他方法的示例。但是,如果可以将其他方法与我现有的情节结合起来,我会接受其他方法。

谢谢!

艾米

qq376055355 回答:使用自动绘图和ensdb成绩单时,是否有可能超越R包ggbio中的x轴范围?

这取决于您是否要裁剪或压缩数据。通常,自动绘图会在某个点上输出一个ggplot对象,该对象可以这样操作。

对于压缩数据:

library(GenomicRanges) # just to be sure start and end work
gene@ggplot + 
  scale_x_continuous(limits = c(start(mut),end(mut)),oob = scales::squish)

enter image description here

对于剪切的数据:

gene@ggplot + 
  coord_cartesian(xlim = c(start(mut),end(mut)))

enter image description here

但是,老实说,我不确定这是否是最有信息的沟通方式,说明您正在绘制内含子的内部。

或者,我写了一个无法通过自动绘图方法工作的基因模型geom(如果要自定义所有内容,有时会很痛苦)。缺点是您必须进行一些手动基因搜索和设置美观。好处是它可以像大多数其他几何一样工作,因此很容易与其他数据组合。

library(ggnomics) # from: https://github.com/teunbrand/ggnomics

# Finding a gene's exons manually
my_gene <- transcriptsByOverlaps(EnsDb.Hsapiens.v86,mut)
my_gene <- exonsByOverlaps(EnsDb.Hsapiens.v86,my_gene)
my_gene <- as.data.frame(my_gene)

some_other_data <- data.frame(
  x = seq(start(mut),end(mut),by = 10),y = cumsum(rnorm(19))
)

ggplot(some_other_data) +
  geom_line(aes(x,y)) +
  geom_genemodel(data = my_gene,aes(xmin = start,xmax = end,y = max(some_other_data$y) + 1,group = 1,strand = strand)) +
  coord_cartesian(xlim = c(start(mut),end(mut)))

enter image description here

希望有帮助!

本文链接:https://www.f2er.com/3165661.html

大家都在问