Force a grob into its components
Some grobs only generate their content to draw at drawing time; this function replaces such grobs with their at-drawing-time content.
grid.force(x, ...) # S3 method for default grid.force(x, redraw = FALSE, ...) # S3 method for gPath grid.force(x, strict = FALSE, grep = FALSE, global = FALSE, redraw = FALSE, ...) # S3 method for grob grid.force(x, draw = FALSE, ...) forceGrob(x) grid.revert(x, ...) # S3 method for gPath grid.revert(x, strict = FALSE, grep = FALSE, global = FALSE, redraw = FALSE, ...) # S3 method for grob grid.revert(x, draw = FALSE, ...)
For the default method,
xshould not be specified. Otherwise,
xshould be a grob or a gPath. If
xis character, it is assumed to be a gPath.
A boolean indicating whether the
pathmust be matched exactly.
pathshould be treated as a regular expression.
A boolean indicating whether the function should affect just the first match of the
path, or whether all matches should be affected.
logical value indicating whether a grob should be drawn after it is forced.
logical value indicating whether to redraw the grid scene after the forcing operation.
Further arguments for use by methods.
Some grobs wait until drawing time to generate what content
will actually be drawn (an axis, as produced by
NULL is a good example because it
has to see what viewport it is going to be drawn in before
it can decide what tick marks to draw).
The content of such grobs (e.g., the tick marks) are not usually
grid.ls() or accessible to
grid.force() function replaces a grob with its
at-drawing-time contents. For example, an axis will be
replaced by a vanilla gTree with lines and text representing
the axis tick marks that were actually drawn. This makes
the tick marks
grid.ls() and accessible to
forceGrob() function is the internal work horse for
grid.force(), so will not normally be called directly by
the user. It is exported so that methods can be written for
custom grob classes if necessary.
grid.revert() function reverses the effect of
grid.force(), replacing forced content with the original
These functions only have an effect for grobs that generate their content
at drawing time using
methods (not for grobs that generate their content
at drawing time using
Forcing an explicit grob produces a result as if the grob were drawn in the current drawing context. It may not make sense to draw the result in a different drawing context.
grid.newpage() pushViewport(viewport(width=.5, height=.5)) # Draw xaxis grid.xaxis(name="xax") grid.ls() # Force xaxis grid.force() grid.ls() # Revert xaxis grid.revert() grid.ls() # Draw and force yaxis grid.force(yaxisGrob(), draw=TRUE) grid.ls() # Revert yaxis grid.revert() grid.ls() # Force JUST xaxis grid.force("xax") grid.ls() # Force ALL grid.force() grid.ls() # Revert JUST xaxis grid.revert("xax") grid.ls()