如何在R中制作时间轴/瀑布图,用于基因/基因组覆盖

use*_*785 0 plot r bioinformatics ggplot2 genome

我想做一个相对简单的情节(让人想起如下的时间线:http://www.ats.ucla.edu/stat/sas/code/timeline.gif),但不是时间在x轴上,它将成为基因组中的基础位置."时间跨度"将是DNA序列支架的覆盖距离,显示它们落入基因组的范围,它们重叠的位置和没有覆盖的位置.这是我正在寻找的粗略模型,显示rRNA的重叠群覆盖,(我遗漏了,但需要,x轴显示开始和停止的位置,以及重叠群的标记(彩色线)): http://i.imgur.com/MDABx.png,具有以下坐标:

Contig# Start1  Stop1   Start2  Stop2   Start3  Stop3   Start4  Stop4
1   1   90  90  100 120 150 200 400
2   1   100 120 150 200 400 NA  NA
3   1   30  90  100 120 135 200 400
4   1   100 120 140 200 400 NA  NA
5   -35 80  90  100 130 150 200 400
6   1   100 200 300 360 400 NA  NA
Run Code Online (Sandbox Code Playgroud)

我很确定这可以在R中完成,可能使用ggplot2,但由于某种原因我无法弄明白.

42-*_*42- 5

这不会像你的情节那样有条理,但它会将线条放入你尚未提供的坐标中:

dfr <- data.frame(seg=sample(1:6, 20, replace=TRUE), start=sample(1:100, 20, replace=TRUE), end=sample(1:100,20, replace=TRUE) )
 plot(c(1,100), c(1,6), type="n")
 with(dfr, segments(y0=seg, y1=seg, x0=start, x1=end, col=2:7, lwd=3))
Run Code Online (Sandbox Code Playgroud)

使用新数据集:

 Contig <- read.table(text=" Start1  Stop1 Start2 Stop2 Start3 Stop3 Start4 Stop4
 1   1   90  90  100 120 150 200 400
 2   1   100 120 150 200 400 NA  NA
 3   1   30  90  100 120 135 200 400
 4   1   100 120 140 200 400 NA  NA
 5   -35 80  90  100 130 150 200 400
 6   1   100 200 300 360 400 NA  NA")
 # the reshape function can be tricky.... but seems to finally work.
 reshape(Contig, direction="long", sep="",
     varying=list(Start=names(Contig)[c(1,3,5,7)],
                   Stop=names(Contig)[c(2,4,6,8)] )  )
#------------------------------
    time Start1 Stop1 id
1.1    1      1    90  1
2.1    1      1   100  2
3.1    1      1    30  3
4.1    1      1   100  4
5.1    1    -35    80  5
6.1    1      1   100  6
1.2    2     90   100  1
2.2    2    120   150  2
3.2    2     90   100  3
4.2    2    120   140  4
5.2    2     90   100  5
6.2    2    200   300  6
1.3    3    120   150  1
2.3    3    200   400  2
3.3    3    120   135  3
4.3    3    200   400  4
5.3    3    130   150  5
6.3    3    360   400  6
1.4    4    200   400  1
2.4    4     NA    NA  2
3.4    4    200   400  3
4.4    4     NA    NA  4
5.4    4    200   400  5
6.4    4     NA    NA  6
#-----------------

 LContig <- reshape(Contig, direction="long", sep="",
   varying=list(Start=names(Contig)[c(1,3,5,7)], Stop=names(Contig)[c(2,4,6,8)] )  )
 plot(range(c(Contig$Start1, Contig$Stop1) , na.rm=TRUE ), c(1,6),
            type="n", xlab="Segments", ylab="Groups")
  with(LContig, segments(y0=id, y1=id, x0=Start1, x1=Stop1, col=2:7, lwd=3))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述