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