geom_genomicNestedZoom 放大视图

1引言

参照 circlize 里面的 nested zooming 功能,借鉴其可视化的方式,写成 geom 图层进行可视化,用来展示部分区域的视图细节部分。

2安装

# install.packages("devtools")
devtools::install_github("junjunlab/ggcirclize")

# or
remotes::install_github("junjunlab/ggcirclize")

3示例

你需要提高一个 track 的原始数据,和一个放大的位置区间数据:

set.seed(111)
bed = generateRandomBed(nr = 600)

zoom <- generateRandomBed(nr = 20)[,-4]

# check
head(zoom,3)
#    chr     start       end
# 1 chr1  52965429 124887955
# 2 chr1 168604490 233330834
# 3 chr2   2089280   5242329

默认绘图:

ggcirclize(bed,aes(end = 360,r0 = 0.8,r1 = 1,
                   chr = chr,gstart = start,gend = end,
                   value = value1,
                   genome = "hg19")) +
  geom_genomicNestedZoom(zoom_data = zoom)
图片

添加原始数据图层:

ggcirclize(bed,aes(end = 360,r0 = 0.8,r1 = 1,
                   chr = chr,gstart = start,gend = end,
                   value = value1,
                   genome = "hg19",
                   color = value1)) +
  geom_trackgenomicpoint(add.xaxis = F) +
  geom_genomicNestedZoom(zoom_data = zoom)
图片

你可以看到每个 zoom 的 sector 大小和上一层的对应 sector 是一样的,你可以使用 zoom.free.sec 来调整, 其中 nested_fill 设置填充颜色:

ggcirclize(bed,aes(end = 360,r0 = 0.8,r1 = 1,
                   chr = chr,gstart = start,gend = end,
                   value = value1,
                   genome = "hg19",
                   color = value1)) +
  geom_trackgenomicpoint(add.xaxis = F) +
  geom_genomicNestedZoom(zoom_data = zoom,nested_fill = rand_color(24),
                         zoom.free.sec = T)
图片

sub.zoom.gap 调整 sector 之间的间距:

ggcirclize(bed,aes(end = 360,r0 = 0.8,r1 = 1,
                   chr = chr,gstart = start,gend = end,
                   value = value1,
                   genome = "hg19",
                   color = value1)) +
  geom_trackgenomicpoint(add.xaxis = F) +
  geom_genomicNestedZoom(zoom_data = zoom,nested_fill = rand_color(24),
                         zoom.free.sec = T,
                         sub.zoom.gap = 3)
图片

extend.start 和 extend.end 对 sector 向左右进行拓展一定大小,要保证原始数据的图层的 gap 间距和 zoom 图层的一致,此外拓展的总的大小不能超过 gap 间距:

ggcirclize(bed,aes(end = 360,r0 = 0.8,r1 = 1,
                   chr = chr,gstart = start,gend = end,
                   value = value1,
                   genome = "hg19",
                   color = value1)) +
  geom_trackgenomicpoint(add.xaxis = F,sector.gap = 10) +
  geom_genomicNestedZoom(zoom_data = zoom,
                         sector.gap = 10,
                         extend.start = 5,
                         extend.end = 5)

图片

zoom_pos 设置放大图层的位置:

ggcirclize(bed,aes(end = 360,r0 = 0.5,r1 = 0.7,
                   chr = chr,gstart = start,gend = end,
                   value = value1,
                   genome = "hg19",
                   color = value1)) +
  geom_trackgenomicpoint(add.xaxis = F,sector.gap = 5,
                         strip.label.pos = "bottom",strip.label.space = 0.05) +
  geom_genomicNestedZoom(zoom_data = zoom,
                         sector.gap = 5,
                         extend.start = 2.5,
                         extend.end = 2.5,
                         zoom_pos = "top",
                         nested_fill = rand_color(24))
图片

对于其它图层的放大也是可以的,你需要指定 geom 图层参数,如果不指定则默认是 point:

ggcirclize(bed,aes(end = 360,r0 = 0.8,r1 = 1,
                   chr = chr,gstart = start,gend = end,
                   value = value1,
                   genome = "hg19")) +
  geom_trackgenomicline(add.xaxis = F) +
  geom_genomicNestedZoom(zoom_data = zoom)
图片
ggcirclize(bed,aes(end = 360,r0 = 0.8,r1 = 1,
                   chr = chr,gstart = start,gend = end,
                   value = value1,color = chr,
                   genome = "hg19")) +
  geom_trackgenomicline(add.xaxis = F,show.legend = F) +
  geom_genomicNestedZoom(zoom_data = zoom,
                         geom = "line",
                         show.legend = F) +
  geom_trackgenomicpoint(aes(r0 = 0.4,r1 = 0.5),
                         add.xaxis = F,show.legend = F,strip.label = F)
图片

geom_trackgenomicarea :

ggcirclize(bed,aes(end = 360,r0 = 0.8,r1 = 1,
                   chr = chr,gstart = start,gend = end,
                   value = value1,fill = chr,
                   genome = "hg19")) +
  geom_trackgenomicarea(add.xaxis = F,show.legend = F) +
  geom_genomicNestedZoom(zoom_data = zoom,color = "black",show.legend = F,
                         geom = "area")
图片

geom_trackgenomicrect:

ggcirclize(cytoband_hg19,
           aes(end = 360,r0 = 0.8,r1 = 1,
               chr = chr,gstart = start,gend = end,
               genome = "hg19")) +
  geom_trackgenomicrect(aes(fill = stain,),add.xaxis = F,color = NA) +
  scale_fill_manual(values = c("gneg" = "white","gpos25" = "grey75","gpos50" = "grey50",
                               "gpos100" = "black","gvar" = "black","acen" = "red",
                               "stalk" = "blue")) +
  geom_genomicNestedZoom(zoom_data = zoom,color = "black",
                         geom = "rect")
图片

geom_trackgenomictile:

bed = generateRandomBed(nr = 500, nc = 4)
bed_long <- bedMatTolong(bed)

ggcirclize(bed_long,aes(end = 360,r0 = 0.6,r1 = 0.8,
                        chr = chr,gstart = start,gend = end,
                        genome = "hg19",
                        x = x,y = y,fill = value)) +
  geom_trackgenomictile(strip.label = T,color = NA) +
  scale_fill_gradient2(low = "green",mid = "white",high = "red",midpoint = 0) +
  geom_genomicNestedZoom(zoom_data = zoom,geom = "tile",color = NA)
图片

4结尾

路漫漫其修远兮,吾将上下而求索。


欢迎加入生信交流群。加我微信我也拉你进 微信群聊 老俊俊生信交流群 (微信交流群需收取 20 元入群费用,一旦交费,拒不退还!(防止骗子和便于管理)) 。QQ 群可免费加入, 记得进群按格式修改备注哦。

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/386463.html

(0)
联系我们
联系我们
分享本页
返回顶部