Clip grob using another grob to specify the clipping path
Source:R/clippingPathGrob.R
clippingPathGrob.RdclippingPathGrob() clips a grob using another grob to specify the clipping path
Arguments
- clippee
Grob to be clipped
- clipper
Grob that defines clipping region
- use_R4.1_clipping
If
TRUEuse the grid clipping path feature introduced in R v4.1.0. IfFALSEdo arasterGrobapproximation. IfNULLtry 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_device
“png” graphics device to save intermediate raster data with if
use_R4.1_clippingisFALSE. IfNULLand suggested packageraggis available and versions are high enough we directly capture clipped raster viaragg::agg_capture(). Otherwise we will usepng_device(defaultragg::agg_png()if available elsegrDevices::png()) andpng::readPNG()to manually compute a clipped raster.- res
Resolution of desired
rasterGrobin pixels per inch ifuse_R4.1_clippingisFALSE.- name
A character identifier.
- gp
An object of class
"gpar", typically the output from a call to the functiongpar. This is basically a list of graphical parameter settings.- vp
A Grid viewport object (or NULL).
Examples
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)
}