我在绘制覆盖率与位置的关系,我有一个非常简单的代码,如下所示:
positions <- 1:200000
coverage <- rep(0, length(positions))
coverage[1:200] <- 2000
coverage[30001:30100] <- 5000
coverage[50001:50100] <- 500
coverage[170001:170300] <- 500
cov <- data.frame(position = positions, coverage = coverage)
ggplot(data = cov, aes(x = position, y = coverage)) +
geom_line() +
xlab("Position") +
ylab("Coverage") +
ggtitle("Coverage vs. Position")
字符串
这给我留下了这样的东西:
enter image description here
这里的问题是,具有高覆盖率的区域被非常长的零覆盖率轨道分隔开。我想缩短这些区域,以便覆盖率区域可见。例如,当有超过100个连续零时,将x轴切割。这可能吗?提前感谢!
2条答案
按热度按时间5lwkijsr1#
这是一个有点doozie!
在绘制它之前,您需要弄清楚有多少个0是连续的。
字符串
然后你可以在此基础上进行绘图。让我说清楚,我找不到一种方法来编程化这个。
型
最后的图看起来像
x1c 0d1x的数据
dgtucam12#
我的方法是取+/-带宽平均值,每次平均值变为或停止为零时创建一个“部分”,过滤掉无聊的零部分,留下尖峰周围区域的视图。
字符串
x1c 0d1x的数据