grid.pattern_rose()
draws a rose curve pattern onto the graphic device.
Usage
grid.pattern_rose(
x = c(0, 0, 1, 1),
y = c(1, 0, 0, 1),
id = 1L,
...,
colour = gp$col %||% "grey20",
fill = gp$fill %||% "grey80",
angle = 30,
density = 0.2,
spacing = 0.05,
xoffset = 0,
yoffset = 0,
units = "snpc",
frequency = 0.1,
grid = "square",
type = NULL,
subtype = NULL,
rot = 0,
alpha = gp$alpha %||% NA_real_,
linetype = gp$lty %||% 1,
linewidth = size %||% gp$lwd %||% 1,
size = NULL,
use_R4.1_masks = getOption("ggpattern_use_R4.1_masks",
getOption("ggpattern_use_R4.1_features")),
png_device = NULL,
res = getOption("ggpattern_res", 72),
default.units = "npc",
name = NULL,
gp = gpar(),
draw = TRUE,
vp = NULL
)
Arguments
- x
A numeric vector or unit object specifying x-locations of the pattern boundary.
- y
A numeric vector or unit object specifying y-locations of the pattern boundary.
- id
A numeric vector used to separate locations in x, y into multiple boundaries. All locations within the same
id
belong to the same boundary.- ...
Currently ignored.
- colour
Stroke colour(s).
- fill
Fill colour(s) or
grid::pattern()
/ gradient object(s).- angle
Rotation angle in degrees.
- density
Approx. fraction of area the pattern fills.
- spacing
Spacing between repetitions of pattern (in
units
units).- xoffset
Shift pattern along x axis (in
units
units).- yoffset
Shift pattern along y axis (in
units
units).- units
grid::unit()
units forspacing
,xoffset
, andyoffset
parameters.- frequency
The “angular frequency” parameter of the rose pattern.
- grid
Adjusts placement and density of certain graphical elements.
"square"
(default) is a square grid."hex"
is a hexagonal grid suitable for hexagonal and triangular tiling."hex_circle"
is a hexagonal grid suitable for circle packing."elongated_triangle"
is a grid used for the "elongated triangle" tiling.- type
Adjusts the repeating of certain aesthetics such as color. Can use any type in
names_hex
,names_square
, ornames_weave
. See forpattern_hex()
,pattern_square()
, andpattern_weave()
for more information about supportedtype
arguments.- subtype
See for
pattern_hex()
,pattern_square()
, andpattern_weave()
for more information about supportedsubtype
arguments.- rot
Angle to rotate rose (degrees, counter-clockwise).
- alpha
Alpha (between 0 and 1) or
NA
(default, preserves colors' alpha value).- linetype
Stroke linetype.
- linewidth
Stroke linewidth.
- size
For backwards compatibility can be used to set
linewidth
.- use_R4.1_masks
If
TRUE
use the grid mask feature introduced in R v4.1.0. IfFALSE
do arasterGrob
approximation. IfNULL
try to guess an appropriate choice. Note not all graphic devices support the grid mask feature.- png_device
“png” graphics device to save intermediate raster data with if
use_R4.1_masks
isFALSE
. IfNULL
and suggested packageragg
is available and versions are high enough we directly capture masked raster viaragg::agg_capture()
. Otherwise we will usepng_device
(defaultragg::agg_png()
if available elsegrDevices::png()
) andpng::readPNG()
to manually compute a masked raster.- res
Resolution of desired
rasterGrob
in pixels per inch ifuse_R4.1_masks
isFALSE
.- default.units
A string indicating the default units to use if
x
ory
are only given as numeric vectors.- 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.- draw
A logical value indicating whether graphics output should be produced.
- vp
A Grid viewport object (or NULL).
Value
A grid grob object invisibly. If draw
is TRUE
then also draws to the graphic device as a side effect.
See also
See https://en.wikipedia.org/wiki/Rose_(mathematics) for more information.
Examples
if (capabilities("png") || guess_has_R4.1_features("masks")) {
x_hex <- 0.5 + 0.5 * cos(seq(2 * pi / 4, by = 2 * pi / 6, length.out = 6))
y_hex <- 0.5 + 0.5 * sin(seq(2 * pi / 4, by = 2 * pi / 6, length.out = 6))
gp <- grid::gpar(fill = c("blue", "red", "yellow", "green"), col = "black")
grid.pattern_rose(x_hex, y_hex,
spacing = 0.15, density = 0.5, angle = 0,
frequency = 1:4, gp = gp)
}
if (capabilities("png") || guess_has_R4.1_features("masks")) {
grid::grid.newpage()
grid.pattern_rose(x_hex, y_hex,
spacing = 0.15, density = 0.5, angle = 0,
frequency = 1/1:4, gp = gp)
}
if (capabilities("png") || guess_has_R4.1_features("masks")) {
grid::grid.newpage()
grid.pattern_rose(x_hex, y_hex,
spacing = 0.18, density = 0.5, angle = 0,
frequency = c(3/2, 7/3, 5/4, 3/7), gp = gp)
}