# Hexagon Bin Smoothing

### Description

Given a `"hexbin"`

(hexagon bin) object, compute a discrete
kernel smoother that covers seven cells, namely a center cell and its
six neighbors. With two iterations the kernel effectively covers
1+6+12=19 cells.

### Usage

1 | ```
smooth.hexbin(bin, wts=c(48,4,1))
``` |

### Arguments

`bin` |
object of class |

`wts` |
numeric vector of length 3 for relative weights of the center, the six neighbor cells, and twelve second neighbors. |

### Details

This discrete kernel smoother uses the center cell, immediate neighbors and second neighbors to smooth the counts. The counts for each resulting cell is a linear combination of previous cell counts and weights. The weights are

1 center cell, | weight = wts[1] |

6 immediate neighbors | weight = wts[2] |

12 second neighbors | weight =wts[3] |

If a cell, its immediate and second neighbors all have a value of
`max(cnt)`

, the new maximum count would be
`max(cnt)*sum(wts)`

. It is possible for the counts to overflow.

The domain for cells with positive counts increases. The hexbin
slots `xbins`

, `xbnds`

, `ybnds`

, and `dimen`

all
reflect this increase.
Note that usually `dimen[2] = xbins+1`

.

The intent was to provide a fast, iterated, immediate neighbor smoother. However, the current hexbin plotting routines only support shifting even numbered rows to the right. Future work can

(1) add a shift indicator to hexbin objects that indicates left or
right shifting.

(2) generalize plot.hexbin() and hexagons()

(3) provide an iterated kernel.

With `wts[3]=0`

, the smoother only uses the immediate neighbors.
With a shift indicator the domain could increase by 2 rows (one bottom
and on top) and 2 columns (one left and one right). However the current
implementation increases the domain by 4 rows and 4 columns, thus
reducing plotting resolution.

### Value

an object of class `"smoothbin"`

, extending class
`"hexbin"`

, see `hexbin`

.
The object includes the additional slot `wts`

.

### References

see `grid.hexagons`

and `hexbin`

.

### See Also

`hexbin`

, `erode.hexbin`

,
`hcell2xy`

,
`gplot.hexbin`

, `hboxplot`

,
`grid.hexagons`

, `grid.hexlegend`

.

### Examples

1 2 3 4 5 6 7 8 9 10 11 12 13 | ```
x <- rnorm(10000)
y <- rnorm(10000)
bin <- hexbin(x,y)
# show the smooth counts in gray level
smbin <- smooth.hexbin(bin)
plot(smbin, main = "smooth.hexbin(.)")
# Compare the smooth and the origin
smbin1 <- smbin
smbin1@count <- as.integer(ceiling(smbin@count/sum(smbin@wts)))
plot(smbin1)
smbin2 <- smooth.hexbin(bin,wts=c(1,0,0)) # expand the domain for comparability
plot(smbin2)
``` |