Fixed dice not rendering with ggplot2 >= 4.0 — The drawDetails.DiceGrob
S3 method was not registered in the package NAMESPACE, so grid never
dispatched to the custom drawing code. Neither tiles nor pips were drawn.
Fixed by adding S3method(grid::drawDetails, DiceGrob) to NAMESPACE via
@exportS3Method.
Fixed invisible pips when fill is not mapped — When the fill
aesthetic was not mapped (default NA), pip colour was also set to NA,
making pips invisible. Pips now default to black when fill is unmapped.
pip_scale parameter — New argument to geom_dice() that controls pip
diameter as a fraction (0–1) of the maximum available space inside each die
face. When size is constant (not mapped), all pips are drawn at
pip_scale × max_diameter. When size is mapped to a variable, pips scale
between 25% and pip_scale of the maximum pip diameter. Set pip_scale = NULL
to disable auto-scaling and use the raw size aesthetic (legacy behaviour).
Default: 0.75.
Deferred rendering via DiceGrob — Pip sizing is now calculated at
grid draw time rather than ggplot build time, so pip diameters adapt
correctly to the final figure dimensions.
Scale expansion for edge tiles — setup_data now exposes
xmin/xmax/ymin/ymax so ggplot2 trains axis scales to include the
full tile area, preventing clipping of border tiles.
New datasets — sample_dice_large (480 rows, 60 taxa) and
sample_dice_miRNA (~90 rows, miRNA dysregulation) are included for
demonstrating high-density and categorical-fill use cases.
Default pip sizing changed — Pips are now auto-scaled to fill the die
face via the new pip_scale parameter (default 0.75). In v1.0.0 pips used
the raw size aesthetic (default 3), which often left excessive whitespace
or caused pips to overflow tile borders at certain figure sizes.
Migration: add pip_scale = NULL to your geom_dice() call to restore
the exact v1.0.0 appearance.
Legend key for unmapped fill — When fill is not mapped, legend keys now
draw a solid black dot instead of an empty circle, improving readability.
This is a cosmetic change with no opt-out.
Axis scale expansion — Edge tiles are no longer clipped because
setup_data now reports tile extents to ggplot2. Plots may show slightly
more padding around the border compared to v1.0.0.
draw_panel signature changed — The method now takes explicit named
arguments (na.rm, ndots, x_length, y_length, pip_scale) instead of
params, .... Code that subclassed GeomDice or called draw_panel
directly will need updating.Sample datasets restructured:
sample_dice_data1: 48 rows → 160 rows (8 taxa × 4 diseases × 5
specimens). Columns are the same but lfc and q may now contain NA.sample_dice_data2: 48 rows → 160 rows; the replicate column has been
removed. Column count changed from 6 to 5.
Scripts that reference sample_dice_data2$replicate or hard-code row
counts from either dataset will break.tibble is now a hard dependency — added to Imports for
column_to_rownames() / remove_rownames().
Minimum R version raised to 4.1.0 (was 4.0.0). R 4.1 is required for
the native pipe operator (|>) used internally.
LICENSE switched to CRAN-standard two-line format (YEAR / COPYRIGHT
HOLDER)..Rbuildignore added to exclude pixi, demo output, test scripts, and other
non-package files from the R CMD build tarball.data-raw/ directory created; dataset-generation scripts moved there from
data/.pixi.toml / pixi.lock added for reproducible environment management.create_demo_plots.R, test_simple_dice.R) rewritten to
exercise the new pip_scale feature and run from the project root.Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.