Title: | Make Hexagonal Heatmaps with Varying Hexagon Sizes |
Version: | 0.1.0 |
Description: | Create hexagonal heatmaps with 'ggplot2', using the 'size' aesthetic to variably size each hexagon. |
License: | GPL (≥ 3) |
Encoding: | UTF-8 |
RoxygenNote: | 7.3.2 |
Imports: | cli, farver, ggplot2, grid, hexbin, rlang, scales, vctrs |
URL: | https://github.com/hrryt/gghexsize, https://hrryt.github.io/gghexsize/ |
BugReports: | https://github.com/hrryt/gghexsize/issues |
NeedsCompilation: | no |
Packaged: | 2025-05-11 00:20:59 UTC; harry |
Author: | Harry Thompson [cre, aut, cph] |
Maintainer: | Harry Thompson <harry@mayesfield.uk> |
Repository: | CRAN |
Date/Publication: | 2025-05-13 09:00:02 UTC |
Hexagon key glyph for legends
Description
Each geom has an associated function that draws the key when the geom needs
to be displayed in a legend. These functions are called draw_key_*()
, where *
stands for the name of the respective key glyph. The key glyphs can be
customized for individual geoms by providing a geom with the key_glyph
argument (see ggplot2::layer()
or examples below.)
Usage
draw_key_hextile(data, params, size)
Arguments
data |
A single row data frame containing the scaled aesthetics to display in this key |
params |
A list of additional parameters supplied to the geom. |
size |
Width and height of key in mm. |
Value
A grid grob.
See Also
ggplot2::draw_key, geom_hextile()
.
Examples
library(ggplot2)
d <- ggplot(diamonds, aes(carat, price, linewidth = after_stat(count))) +
scale_linewidth(trans = "log10")
d + geom_hex(colour = "black")
# key glyphs can be specified by their name
d + geom_hex(colour = "black", key_glyph = "hextile")
# key glyphs can be specified via their drawing function
d + geom_hex(colour = "black", key_glyph = draw_key_hextile)
Hexagonal heatmap of 2d bin summaries sized by bin counts
Description
Divides the plane into regular hexagons,
counts the number of cases in each hexagon, and then (by default)
maps the number of cases to the hexagon size and fill.
If a z
aesthetic is provided, the hexagon fill is instead mapped to
the summary of z
with fun
. z2
and z3
are made available in the case
that multiple summary statistics are required.
Hexagon bins avoid the visual artefacts sometimes generated by
the very regular alignment of ggplot2::geom_bin_2d()
.
Usage
geom_hextile(
mapping = NULL,
data = NULL,
stat = "summary_hextile",
position = "identity",
...,
na.rm = FALSE,
show.legend = NA,
inherit.aes = TRUE
)
stat_summary_hextile(
mapping = NULL,
data = NULL,
geom = "hextile",
position = "identity",
...,
bins = 30,
binwidth = NULL,
drop = TRUE,
fun = "mean",
fun.args = list(),
fun2 = "mean",
fun2.args = list(),
fun3 = "mean",
fun3.args = list(),
na.rm = FALSE,
show.legend = NA,
inherit.aes = TRUE
)
Arguments
mapping |
Set of aesthetic mappings created by |
data |
The data to be displayed in this layer. There are three options: If A A |
position |
A position adjustment to use on the data for this layer. This
can be used in various ways, including to prevent overplotting and
improving the display. The
|
... |
Other arguments passed on to
|
na.rm |
If |
show.legend |
logical. Should this layer be included in the legends?
|
inherit.aes |
If |
geom , stat |
geom,stat Override the default connection between |
bins |
numeric vector giving number of bins in both vertical and horizontal directions. Set to 30 by default. |
binwidth |
Numeric vector giving bin width in both vertical and
horizontal directions. Overrides |
drop |
drop if the output of |
fun , fun2 , fun3 |
function for summary. |
fun.args , fun2.args , fun3.args |
A list of extra arguments to pass to |
Value
A ggplot2::layer()]
Aesthetics
geom_hextile()
understands the following aesthetics.
Required aesthetics are displayed in bold and defaults are displayed for optional aesthetics:
Learn more about setting these aesthetics in vignette("ggplot2-specs")
.
stat_summary_hextile()
understands the following aesthetics.
Required aesthetics are displayed in bold and defaults are displayed for optional aesthetics:
Learn more about setting these aesthetics in vignette("ggplot2-specs")
.
Computed variables
These are calculated by the 'stat' part of layers and can be accessed with delayed evaluation.
-
after_stat(x)
,after_stat(y)
location. -
after_stat(count)
number of points in bin. -
after_stat(density)
density of points in bin, scaled to integrate to 1. -
after_stat(ncount)
count, scaled to maximum of 1. -
after_stat(ndensity)
density, scaled to maximum of 1. -
after_stat(value)
number of points in bin, or ifz
is supplied, value of summary statistic fromz
. -
after_stat(value2)
ifz2
is supplied, value of summary statistic fromz2
. -
after_stat(value3)
ifz3
is supplied, value of summary statistic fromz3
.
Controlling binning parameters for the x and y directions
The arguments bins
and binwidth
can be set separately for the x and y directions.
When given as a scalar, one value applies to both directions.
When given as a vector of length two, the first is applied to the x direction
and the second to the y direction.
Alternatively, these can be a named list containing x and y elements,
for example list(x = 10, y = 20)
.
See Also
scale_size_tile()
, draw_key_hextile()
, ggplot2::stat_summary_hex()
,
ggplot2::stat_bin_hex()
, ggplot2::geom_hex()
.
Examples
library(ggplot2)
d <- ggplot(diamonds, aes(carat, depth, z = price))
# fill: median price in bin
# size: number of points in bin
d +
geom_hextile(fun = "median") +
scale_size_tile(limits = c(0, 100))
# fill: mean price in bin
# size: sum of prices in bin
d +
geom_hextile(aes(z2 = price, size = after_stat(value2)), fun2 = "sum") +
scale_size_tile(limits = c(0, 1e5))
# fill: mean price in bin
# size: density, scaled to maximum of 1, weighted by price
d +
geom_hextile(aes(weight = price, size = after_stat(ndensity))) +
scale_size_tile(limits = c(0, 0.1))
# fill: number of points in bin
# size: number of points in bin
ggplot(diamonds, aes(carat, depth)) +
geom_hextile() +
scale_size_tile(limits = c(0, 100))
Scales for area or radius of bin tiles
Description
Replacements for ggplot2::scale_size_area()
and
ggplot2::scale_size_binned_area()
with convenient defaults for
geom_hextile()
.
Usage
scale_size_tile(
name = ggplot2::waiver(),
...,
max_size = 1,
oob = scales::squish
)
scale_size_binned_tile(
name = ggplot2::waiver(),
...,
max_size = 1,
oob = scales::squish
)
Arguments
name |
The name of the scale. Used as the axis or legend title. If
|
... |
Arguments passed on to |
max_size |
Size of largest points. |
oob |
One of:
|
Details
These are convenience functions with the following changed defaults:
-
max_size = 1
rather than6
, -
oob = scales::squish
.
In practice, this makes it easy to set a hard upper limit on a scale, above which sizes are clamped to 1.
Value
Examples
library(ggplot2)
d <- ggplot(diamonds, aes(carat, depth, z = price)) +
geom_hextile()
d + scale_size_tile(limits = c(NA, 100))
d + scale_size_binned_tile(transform = "log10")