grid.pattern_regular_polygon() draws a regular polygon pattern onto the graphic device.

  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,
  scale = 0.5,
  shape = "convex4",
  grid = "square",
  type = NULL,
  subtype = NULL,
  rot = 0,
  alpha = gp$alpha %||% NA_real_,
  linetype = gp$lty %||% 1,
  size = gp$lwd %||% 1,
  default.units = "npc",
  name = NULL,
  gp = gpar(),
  draw = TRUE,
  vp = NULL



A numeric vector or unit object specifying x-locations of the pattern boundary.


A numeric vector or unit object specifying y-locations of the pattern boundary.


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


Stroke colour


Fill colour


Rotation angle in degrees


Approx. fraction of area the pattern fills.


Spacing between repetitions of pattern ('snpc' units between 0 and 1).


Shift pattern along x axis ('snpc' units between 0 and 1).


Shift pattern along y axis ('snpc' units between 0 and 1).


For star polygons, multiplier (between 0 and 1) applied to exterior radius to get interior radius.


Either "convex" or "star" followed by the number of exterior vertices or alternatively "circle", "square", "null", "rhombille_rhombus", "tetrakis_left", or "tetrakis_right". For example "convex5" corresponds to a pentagon and "star6" corresponds to a six-pointed star. The "square" shape is larger than the "convex4" shape and is rotated an extra 45 degrees, it can be used to generate a multi-colored “checkers” effect when density is 1. The "null" shape is not drawn, it can be used to create holes within multiple-element patterns. The "rhombille_rhombus" shape draws a rhombus while the "tetrakis_left" or "tetrakis_right" shapes draw an isosceles right triangle. These latter three non-regular-polygon shapes are intended to help generate rhombille and tetrakis square tilings.


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.


Adjusts the repeating of certain aesthetics such as color. Can use any type in names_hex, names_square, or names_weave. See for pattern_hex(), pattern_square(), and pattern_weave() for more information about supported type arguments.


See for pattern_hex(), pattern_square(), and pattern_weave() for more information about supported subtype arguments.


Angle to rotate regular polygon (degrees, counter-clockwise).


Alpha (between 0 and 1) or NA (default, preserves colors' alpha value).


Stroke linetype


Stroke linewidth


A string indicating the default units to use if x or y are only given as numeric vectors.


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 logical value indicating whether graphics output should be produced.


A Grid viewport object (or NULL).


A grid grob object invisibly. If draw is TRUE then also draws to the graphic device as a side effect.

See also

grid.pattern_circle() for a special case of this pattern. The tiling vignette features more examples of regular polygon tiling using this function vignette("tiling", package = "gridpattern").


if (require("grid")) { 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)) # 'density', 'rot', and 'shape' are vectorized grid.newpage() grid.pattern_regular_polygon(x_hex, y_hex, colour = "black", fill = c("blue", "yellow", "red"), shape = c("convex4", "star8", "circle"), density = c(0.45, 0.42, 0.4), spacing = 0.08, angle = 0) # checker pattern using "square" shape grid.newpage() grid.pattern_regular_polygon(x_hex, y_hex, shape = "square", colour = "transparent", fill = c("black", "red", "blue", "yellow"), angle = 0, density = 1.0, spacing = 0.2) # checker pattern using the default "convex4" shape grid.newpage() grid.pattern_regular_polygon(x_hex, y_hex, density = 1.0, colour = "black", fill = "blue") # using a "twill_zigzag" 'weave' pattern grid.newpage() grid.pattern_regular_polygon(x_hex, y_hex, fill = c("blue", "yellow"), shape = c("circle", "star8"), density = c(0.5, 0.6), type = "twill_zigzag") # hexagon tiling grid.newpage() grid.pattern_regular_polygon(x_hex, y_hex, color = "transparent", fill = c("white", "grey", "black"), density = 1.0, spacing = 0.1, shape = "convex6", grid = "hex") # triangle tiling grid.newpage() grid.pattern_regular_polygon(x_hex, y_hex, fill = "green", density = 1.0, spacing = 0.1, shape = "convex3", grid = "hex") }