grid.grab(warn = 2, wrap = FALSE, ...)
grid.grabExpr(expr, warn = 2, wrap = FALSE, ...)
TRUE
, each non-grob element on the
display list is captured by wrapping it in a grob.
grid.grab
to capture an existing drawing
and grid.grabExpr
to capture the output from
an expression (without drawing anything). For each of these functions, the output can be captured in
two ways. One way tries to be clever and make a
gTree with a childrenvp slot containing all viewports on
the display list (including those
that are popped) and every
grob on the display list as a child of the new
gTree; each child has a vpPath in the vp slot so that it is
drawn in the appropriate viewport.
In other words, the gTree contains all elements on the display
list, but in a slightly altered form. The other way, wrap=TRUE
,
is to create a grob for every element on the
display list (and make all of those grobs children of the
gTree). The first approach creates a more compact and elegant gTree,
which is more flexible to work with,
but is not guaranteed to faithfully replicate all possible
grid output. The second approach is more brute force, and
harder to work with, but
should always faithfully replicate the original output.gTree
pushViewport(viewport(w=.5, h=.5))
grid.rect()
grid.points(stats::runif(10), stats::runif(10))
popViewport()
grab <- grid.grab()
grid.newpage()
grid.draw(grab)
Run the code above in your browser using DataLab