`grid.pattern_weave()`

draws a weave pattern onto the graphic device.

## Usage

```
grid.pattern_weave(
x = c(0, 0, 1, 1),
y = c(1, 0, 0, 1),
id = 1L,
...,
colour = gp$col %||% "grey20",
fill = gp$fill %||% "grey80",
fill2 = fill,
angle = 30,
density = 0.2,
spacing = 0.05,
xoffset = 0,
yoffset = 0,
units = "snpc",
alpha = gp$alpha %||% NA_real_,
linetype = gp$lty %||% 1,
linewidth = size %||% gp$lwd %||% 1,
size = NULL,
grid = "square",
type = "plain",
subtype = NA,
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
The fill colour for the horizontal "weft" lines.

- fill2
The fill colour for the vertical "warp" lines.

- 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 for`spacing`

,`xoffset`

, and`yoffset`

parameters.- 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`

.- 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
The weave type. See

`pattern_weave()`

for more details.- subtype
The weave subtype. See

`pattern_weave()`

for more details.- default.units
A string indicating the default units to use if

`x`

or`y`

are only given as numeric vectors.- name
A character identifier.

- gp
An object of class

`"gpar"`

, typically the output from a call to the function`gpar`

. 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.

## Examples

```
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(colour = "black", fill = "lightblue", lwd=0.5)
# Plain weave (default weave)
grid.pattern_weave(x_hex, y_hex, fill2 = "yellow",
gp = gp, spacing = 0.1, density = 0.3)
# Irregular matt weave
grid::grid.newpage()
grid.pattern_weave(x_hex, y_hex, type = "matt_irregular",
fill2 = "yellow", gp = gp, spacing = 0.1, density = 0.3)
# Twill weave
grid::grid.newpage()
grid.pattern_weave(x_hex, y_hex, type = "twill",
fill2 = "yellow", gp = gp, spacing = 0.1, density = 0.3)
# Zig-zag twill
grid::grid.newpage()
grid.pattern_weave(x_hex, y_hex, type = "twill_zigzag",
fill2 = "yellow", gp = gp, spacing = 0.05, density = 0.7)
# Herringbone twill with density 1
grid::grid.newpage()
gp$col <- NA
grid.pattern_weave(x_hex, y_hex, type = "twill_herringbone",
fill2 = "yellow", gp = gp, spacing = 0.05, density = 1.0)
```