Pregunta

I'm trying to plot two figures onto one PDF, using this code:

ncols <- 1
nrows <- 2
grid.newpage()
pushViewport(viewport(layout = grid.layout(nrows, ncols)))
for (i in seq_along(chroms)) {
pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 1))
plotTracks(list(itrack, gtrack, dTrack),
    chromosome = chr1, add = TRUE)
pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 2))
plotTracks(list(biomTrack, gtrack2),
    chromosome = chr1, add = TRUE)
popViewport(1)
}

The problem is, the two figures overlap! (And the row2 of the figure remains empty)

I'm hoping fresh eyes will catch my bug. What am I doing wrong?

EDITED TO REFLECT COMMENT FROM @DINRE

ncols <- 1
nrows <- 2
grid.newpage()
pushViewport(viewport(layout = grid.layout(nrows,
+     ncols)))
for (i in seq_along(chroms)) {
pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 1))
plotTracks(list(itrack, gtrack, dTrack),
    chromosome = chr1, add = TRUE)
**popViewport(1)** ## NEED TO POP OUT FIRST ROW BEFORE PLOTTING SECOND.
pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 2))
plotTracks(list(biomTrack, gtrack2),
    chromosome = chr1, add = TRUE)
popViewport(1)
}
¿Fue útil?

Solución

The bottom row's viewport is being pushed inside of the top row's viewport. Popping the top row's viewport first seems to fix the problem.

Note: This is a really common mistake to make with viewports, so don't feel bad if it happens to you.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top