这可能是重复的,但我发现的所有问题似乎都对我的情况没有帮助。
我有一个finaldf
数据框,其中包含不同时间点的值,并且特定时间点用作 x 轴断点(对应于 DNA 序列)。我这样获得它:
myseq <- "AGAATATTATACATTCATCT"
set.seed(123)
mydata <- data.frame(time=1:100, value=rnorm(100, mean=10, sd=2))
indices <- seq(5, 100, length.out=20)
seqsplit <- unlist(strsplit(myseq, ""))
ind_df <- data.frame(call=seqsplit, time=indices)
finaldf <- dplyr::left_join(mydata, ind_df, by="time")
它看起来像这样:
> finaldf
time value call
1 1 8.879049 <NA>
2 2 9.539645 <NA>
3 3 13.117417 <NA>
4 4 10.141017 <NA>
5 5 10.258575 A
6 6 13.430130 <NA>
7 7 10.921832 <NA>
8 8 7.469878 <NA>
9 9 8.626294 <NA>
10 10 9.108676 G
11 11 12.448164 <NA>
12 12 10.719628 <NA>
13 13 10.801543 <NA>
14 14 10.221365 <NA>
15 15 8.888318 A
...
我将其绘制如下:
P <- ggplot2::ggplot(finaldf, ggplot2::aes(x=time, y=value)) +
ggplot2::geom_line(linewidth=0.5) +
ggplot2::scale_x_continuous(breaks=indices, labels=seqsplit) +
ggplot2::theme_light()
grDevices::pdf(file="test.pdf", height=4, width=10)
print(P)
grDevices::dev.off()
得到如下图的结果:
现在我想在序列中引入不同的间隙并获得“间隙图”,与上面的图相同但有间隙。
我的出发点是原始finaldf
序列和不同的间隙序列,这些序列与原始序列相同,但有间隙。例如:
gapseq1 <- "AGAA-TAT--TAT-ACATT---CATCT-"
gapseq2 <- "A-G-AATAT----TATACATTCA-TCT"
对于这 2 个有间隙的序列,我想重新创建以下图(理想情况下保留网格,但不是必需的):
我怎样才能轻松地实现这一点?谢谢!
当您不需要任何点时,只需删除该值:
用于
gregexpr
查找间隙序列中每个“-”的索引,并add_row
使用这些索引将行添加到数据框中。