| Type: | Package | 
| Title: | Hexbin Plots with Triangles | 
| Version: | 0.9.17 | 
| Author: | Thomas Lumley (Jie Fu Yu made a prototype) | 
| Maintainer: | Thomas Lumley <t.lumley@auckland.ac.nz> | 
| Description: | Display hexagonally binned scatterplots for multi-class data, using coloured triangles to show class proportions. | 
| License: | MIT + file LICENSE | 
| Imports: | hexbin, graphics, FNN, grid, grDevices | 
| Suggests: | lattice, knitr, datasets | 
| VignetteBuilder: | knitr | 
| NeedsCompilation: | no | 
| Packaged: | 2022-04-26 06:04:22 UTC; tlum005 | 
| Repository: | CRAN | 
| Date/Publication: | 2022-04-26 09:20:02 UTC | 
Hexagonal binning with classes
Description
Displays a hexagonally-binned scatterplot with coloured subtriangles to indicate number of observations in each class. With a single class, gives a base-graphics version of the ordinary hexbin plot.
Usage
hextri(x,...)
## Default S3 method:
hextri(x, y, class, colours, nbins = 10, border =
TRUE, diffuse=FALSE, style=c("alpha","size"), weights=NULL,
sorted=!diffuse,minfrac=0, ...)
## S3 method for class 'formula'
hextri(x, data=parent.frame(), class,colours,nbins=10,
border=TRUE, diffuse=FALSE, style=c("alpha","size"),weights=NULL, sorted=!diffuse,
 xlab=NULL, ylab=NULL,minfrac=0,...)
Arguments
| x | Coordinates of points, or for the formula method, a model formula | 
| y | coordinates | 
| data | The  | 
| class | Factor giving class membership for points | 
| colours | Vector of colors (number, name, or hashtag format) giving the colours for each class | 
| nbins | Number of bins in the x-axis direction | 
| border | Include a narrow transparent border around each triangle and hexagon | 
| diffuse | Pass on rounding error to nearest not-yet-drawn hexes so that rare classes get represented | 
| style | Represent data by hexagon size or by alpha-blending | 
| weights | If not  | 
| sorted | Should the triangles be sorted into a consistent order within each hex? More attractive but can cause 3-d artifacts and may be less accurate. | 
| xlab,ylab | Specify to override the formula-based defaults | 
| minfrac | Cells with radius smaller than this fraction of a whole
cell will be drawn as points. Most useful with  | 
| ... | Passed to the  | 
Details
Uses the Sainte-Lague method to apportion counts to triangles, ensuring the counts round to exactly six triangles per hexagon.
The binning/aspect ratio are adjusted to give regular hexagons on the figure region set by plot(x,y). If you reshape the window you will need to redraw the plot. 
Value
A list with components x, y, and col suitable as input to polygon()
Author(s)
Thomas Lumley
See Also
Examples
xx<-rnorm(1000)
yy<-rnorm(1000)
cc<-cut(xx*yy,c(-Inf,-.4,0,.4,Inf))
plot(xx,yy,col=(1:4)[cc])
hextri(xx,yy,cc,1:4,nbins=20,border=TRUE,style="size")
##formula method
data(NHANES, package="hexbin")
hextri(Weight~Age, class=Smoke, col=c("red","orange","green","grey40"),
   data=NHANES, style="size",nbins=20, main="Smoking")
legend("topright",fill=c("red","orange","green","grey40"),
   legend=c("Current","Past","Never","unknown"),bty="n")
## minimum sizes
data(NHANES, package="hexbin")
hextri(Weight~Age, class=Smoke, col=c("red","orange","green","grey40"),
   data=NHANES, style="size",nbins=20, main="Smoking",minfrac=.2)
legend("topright",fill=c("red","orange","green","grey40"),
   legend=c("Current","Past","Never","unknown"),bty="n")
## using the return value of hextri
rval<-hextri(xx,yy,cc,1:4,nbins=20,border=TRUE,style="alpha")
plot(y~x,data=rval,type="n")
with(rval, polygon(x,y,col=col,border=NA))
## diffusion
xx<-runif(10000)
yy<-runif(10000)
cc<-rep(1:3,c(4750,4750,500))
hextri(xx,yy,cc,2:4,border=TRUE,diffuse=FALSE,style="size")
hextri(xx,yy,cc,2:4,border=TRUE,diffuse=TRUE,sorted=TRUE, style="size")
hextri(xx,yy,cc,2:4,border=TRUE,diffuse=TRUE,style="size",weights=cc)
A lattice panel function for hexagonal binning with classes
Description
Displays a hexagonally-binned scatterplot with coloured subtriangles to indicate number of observations in each class. Uses the Sainte-Lague method to apportion counts to triangles, ensuring the counts round to exactly six triangles per hexagon.
Usage
panel.hextri(x, y, groups, subscripts, colours, nbins = 10, border = TRUE,
   diffuse = FALSE, style = c("alpha", "size"), weights = NULL,
   sorted=!diffuse, shape = 1, ...)
Arguments
| x,y | point coordinates for the subset being plotted | 
| groups | A factor giving the class identity for all points (will be filled in automatically by  | 
| subscripts | Vector selecting the elements of  | 
| colours | Vector of colors (number, name, or hashtag format) giving the colours for each class | 
| nbins | Number of bins along the x axis | 
| border | If  | 
| diffuse | If  | 
| style | Represent data by hexagon size or by alpha-blending | 
| weights | If not  | 
| sorted | Sort the triangles into a consistent order within each hex? | 
| shape | Aspect ratio for each hex. | 
| ... | because you have to. | 
Value
A panel
Author(s)
Thomas Lumley
See Also
hextri is the base-graphics plot
Examples
library(lattice)
xx<-rnorm(1000)
yy<-rnorm(1000)
cc<-cut(xx*yy,c(-Inf,-.4,0,.4,Inf))
zz<-cut(xx+yy,c(-Inf,-1,0,1,Inf))
plot(xx,yy,col=(1:4)[cc])
xyplot(yy~xx|zz, panel=panel.hextri,groups=cc,colours=1:4,style="size",nbins=10)
data(airquality)
airquality$o3group<-with(airquality, cut(Ozone, c(0,18,60,Inf)))
xyplot(Temp~Solar.R|equal.count(Wind,4), groups=o3group, panel=panel.hextri,
  data=na.omit(airquality),colours=c("royalblue","grey60","goldenrod"),
  strip=strip.custom(var.name="Wind Speed"),xlab="Solar Radiation (langley)",
  ylab="Temperature (F)")
Proportional representation by Sainte-Lague method
Description
Originally an algorithm for proportional allocation of seats to parties in elections, used here to assign the six triangles in each hex to classes.
Usage
sainte_lague(votes, nseats)
Arguments
| votes | Vector of 'votes' for each party, non-negative numeric values | 
| nseats | Single integer giving the number of seats to be allocated (6, here) | 
Value
Numeric vector of length nseats giving the class membership for each seat, with an error attribute giving the rounding errors for each party.
References
https://en.wikipedia.org/wiki/Sainte-Lagu%C3%AB_method
See Also
Examples
sainte_lague(c(100,200,300,50),6)