R/clippingPathGrob.R
clippingPathGrob.RdclippingPathGrob() clips a grob using another grob to specify the clipping path
Grob to be clipped
Grob that defines clipping region
If TRUE use the grid clipping path feature introduced in R v4.1.0.
If FALSE do a rasterGrob approximation.
If NULL try to guess an appropriate choice.
Note not all graphic devices support the grid clipping path feature
and the grid clipping path feature does not nest.
“png” graphics device to save intermediate raster data with if use_R4.1_clipping is FALSE.
If NULL and suggested package ragg is available
and versions are high enough we directly capture clipped raster via ragg::agg_capture().
Otherwise we will use png_device
(default ragg::agg_png() if available else grDevices::png()) and png::readPNG()
to manually compute a clipped raster.
Resolution of desired rasterGrob in pixels per inch if use_R4.1_clipping is FALSE.
A character identifier.
An object of class "gpar", typically the output
from a call to the function gpar. This is basically
a list of graphical parameter settings.
A Grid viewport object (or NULL).
A grid grob
if (capabilities("png") && require("grid")) {
clippee <- patternGrob("circle", gp = gpar(col = "black", fill = "yellow"),
spacing = 0.1, density = 0.5)
angle <- seq(2 * pi / 4, by = 2 * pi / 6, length.out = 7)
x_hex_outer <- 0.5 + 0.5 * cos(angle)
y_hex_outer <- 0.5 + 0.5 * sin(angle)
x_hex_inner <- 0.5 + 0.25 * cos(rev(angle))
y_hex_inner <- 0.5 + 0.25 * sin(rev(angle))
clipper <- grid::pathGrob(x = c(x_hex_outer, x_hex_inner),
y = c(y_hex_outer, y_hex_inner),
id = rep(1:2, each = 7),
rule = "evenodd")
clipped <- clippingPathGrob(clippee, clipper, use_R4.1_clipping = FALSE)
grid.newpage()
grid.draw(clipped)
}