Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

hexpolygon

Hexagon Coordinates and Polygon Drawing


Description

Simple ‘low-level’ function for computing and drawing hexagons. Can be used for ‘grid’ (package grid) or ‘traditional’ (package graphics) graphics.

Usage

hexcoords(dx, dy = NULL, n = 1, sep = NULL)

hexpolygon(x, y, hexC = hexcoords(dx, dy, n = 1), dx, dy = NULL,
           fill = 1, border = 0, hUnit = "native", ...)

Arguments

dx,dy

horizontal and vertical width of the hexagon(s).

n

number of hexagon “repeats”.

sep

separator value to be put between coordinates of different hexagons. The default, NULL doesn't use a separator.

x,y

numeric vectors of the same length specifying the hexagon centers around which to draw.

hexC

a list as returned from hexcoords(). Its component no.sep determines if grid or traditional graphics are used. The default (via default of hexcoords) is now to use grid graphics.

fill,border

passed to grid.polygon (for grid).

hUnit

string or NULL determining in which units (x,y) values are.

...

further arguments passed to polygon (for graphics).

Value

hexcoords() returns a list with components

x,y

numeric vectors of length n * 6 (or n * 7 if sep is not NULL) specifying the hexagon polygon coordinates (with sep appended to each 6-tuple).

no.sep

a logical indicating if sep was NULL.

hexpolygon returns what its last grid.polygon(.) or polygon(.) call returns.

Author(s)

Martin Maechler, originally.

See Also

grid.hexagons which builds on these.

Examples

str(hexcoords(1, sep = NA))  # multiple of (6 + 1)
str(hexcoords(1, sep = NULL))# no separator -> multiple of 6


## hexpolygon()s:
x <- runif(20, -2, 2)
y <- x + rnorm(20)

## 1) traditional 'graphics'
plot(x,y, asp = 1, "plot() + hexpolygon()")
hexpolygon(x,y, dx = 0.1, density = 25, col = 2, lwd = 1.5)

## 2) "grid" :

addBit <- function(bnds, f = 0.05) bnds + c(-f, f) * diff(bnds)
sc <- addBit(rxy <- range(x,y))# same extents (cheating asp=1)
library("grid")
grid.newpage()
pushViewport(plotViewport(.1+c(4,4,2,1), xscale = sc, yscale = sc))
grid.rect()
grid.xaxis()
grid.yaxis()
grid.points(x,y)
hexpolygon(x,y, hexcoords(dx = 0.1, sep=NULL), border = "blue", fill=NA)
popViewport()

hexbin

Hexagonal Binning Routines

v1.28.2
GPL-2
Authors
Dan Carr <dcarr@voxel.galaxy.gmu.edu>, ported by Nicholas Lewin-Koh and Martin Maechler <maechler@stat.math.ethz.ch>, contains copies of lattice functions written by Deepayan Sarkar <deepayan.sarkar@r-project.org>
Initial release

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.