R: Hexagon Coordinates and Polygon Drawing

hexpolygon {hexbin} | R Documentation

## 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()

[Package hexbin version 1.28.1 Index]