vellumplot
A Grammar of Graphics on the vellum Backend
vellumplot tags its first release with a bet most R grammars don't make: the static figure and the widget are the same object.
◆Recent moves
- 14d ago
First tagged release: one spec compiles to PNG, SVG, tagged PDF and a widget
⚡ SPARKThe debut tagged release, and the first statement of what the package is for rather than what changed in it. It arrives with the parity features and specialist marks of the preceding three weeks already in place, which is why a first release lands at 0.9.0 rather than 0.1.0.
View source ↗ - 19d ago
Flow maps and edge bundling for dense graph plots
Adds mark_flow_map() for one-to-many flows in the Minard idiom, with spiral or Steiner tree routing and width tracking volume, plus mark_edge_bundle() to collapse a node-link hairball into legible trunks across six bundling algorithms. Both delegate geometry to the edgebundle package and draw the returned paths with normal edge aesthetics, extending the grammar rather than special-casing these charts.
View source ↗ - 24d ago
vhierarchy() replaces vsunburst(); declarative interactivity arrives
A breaking consolidation: one constructor now draws a parent-list tree as sunburst, icicle, treemap or circlepack via a type argument, and vsunburst() is removed rather than deprecated. select_point() and select_interval() also become part of the plot spec, which is the first appearance of interactivity as declared state rather than a post-hoc wrapper.
View source ↗ - 26d ago
Sankey crossing minimisation and per-branch sunburst colouring
Sankey nodes are now ordered within each column by the Sugiyama barycenter heuristic instead of first-appearance order, and ribbon slices stack to meet nodes in matching order, removing the crossings that remained inside a fan. Sunburst wedges colour by top-level branch and start at twelve o'clock. Quality-of-default work rather than new capability, but it is the difference between a chart being readable and being redrawn by hand.
View source ↗ - 29d ago
Secondary axes land; rich legend titles stop clipping
Adds sec.axis with sec_axis() and dup_axis() for a transformed second axis on the opposite edge, scoped to Cartesian coordinates with a clear error when combined with coord_flip, polar coordinates or free facet scales. Also fixes rich md() legend titles measuring as zero width and spilling off the page — a measurement bug of exactly the kind the vellum engine was fixing in the same window.
View source ↗ - 1mo ago
Categorical datashading in one call, plus image marks at data points
mark_datashade() now accepts a discrete colour aesthetic and shades categorically, colouring each cell by the count-weighted average of the hues it holds with a real colour legend, replacing the old stack-one-layer-per-category idiom. mark_image() places bitmaps such as flags or logos at data points. Both extend existing marks through the normal aesthetic system rather than adding parallel APIs.
View source ↗