← Back to all sparks
G

ggalign

INFRA · APIS
Velocity0.0

A 'ggplot2' Extension for Composable Visualization

Composable aligned layouts, rebuilt on S7 while ggplot2 4.0 lands underneath.

ggplot2layoutheatmapss7bioinformatics-visualization
Current state
ggalign composes multiple ggplots against a shared observation ordering, covering heatmap annotation, oncoplots, phylogenies and circular layouts. Releases have come roughly monthly through 2025, first completing the layout system, then migrating the internals to S7 and absorbing the ggplot2 4.0 changes. The alignment machinery is now exported for other packages to build on.
Where it's heading
Two threads run in parallel. One widens what can be aligned, with sector facets, ideograms, image point shapes and observation linking. The other keeps rebuilding the foundation, with the S7 migration, repeated renames toward consistent naming, and the deliberate handing of element_polygon() and element_curve() upstream to ggplot2. The renaming is aggressive enough that each recent release soft-deprecates something.
Prediction
With the internals on S7 and the Patch object exported, the next step is most likely stabilising those names rather than another refactor.

Recent moves

  1. 10mo ago

    alignpatch internals moved to S7; Patch object exported

    Fixes absolute panel dimensions under ggplot2 4.0, refactors the alignpatch layer onto S7, and exports the Patch object so other packages can use the alignment machinery. Two more renames land, with alignpatch() becoming patch() and the old patch() becoming as_grob().

    View source ↗
  2. 11mo ago

    Internals migrated to S7; ideogram, tags and image shapes

    Migrates all internal objects to the S7 class system and adds visible surface at the same time: layout_theme() and layout_tags(), plot_ideogram() for cytoband tracks, geom_magick() for image point shapes, and phylo splitting in align_phylo(). element_polygon() and element_curve() are removed to be implemented upstream in ggplot2 instead.

    View source ↗
  3. 1y ago

    z aesthetic scales and guide collection in borders

    Adds a full family of scale_z_* functions, ensures plots placed in a border collect their guides so they stop overlapping, and gives geom_subrect() and geom_subtile() explicit nrow and ncol control. The circular layout arguments are renamed again.

    View source ↗
  4. 1y ago

    channelGrob() draws across facets; ggplot2 3.5.2 fix

    Adds channelGrob() for drawing grobs that span facets, which is the primitive the later linking and annotation work needs, alongside a check fix for ggplot2 3.5.2.

    View source ↗
  5. 1y ago

    Layout system declared complete; polar facets and coord_circle()

    A milestone release rather than a feature one, marking the layout system as complete. The additions are polar: facet_sector() for facets under polar coordinates, coord_circle() for finer control than coord_radial(), and multi-facet support in circle_layout().

    View source ↗
  6. 1y ago

    Layouts split into discrete and continuous; linking system added

    ⚡ SPARK

    The release that set the current model: the *_free() layouts are removed and every layout becomes either discrete or continuous alignment, while cross_link(), cross_mark(), ggmark() and the link and mark drawing functions make connections between observations across plots a first-class object.

    View source ↗