Skip to content

Proposal: new dataviz types — treemap, sankey, slopegraph + more #62

Description

@0xDarkMatter

Love this repo @cathrynlavery ! I've been using some charts and dataviz in my own projects recently so thought I would contribute some extra chart types.

The current 27 types cover diagrams really well. On the chart side there's bar, line, and radar — these would add proportion (treemap), flow (sankey), rank change (slopegraph), paired values (dumbbell), part-of-whole counts (waffle), and more.

I've drafted 16 candidates in the house type-reference format, each with a working example in the default skin using public data (OWID, HadCRUT5, Olympic medals, US Census). They're all below — pick whichever you'd like included.

They all follow the house rules — one accent, ink-opacity ramps, mono for numbers, sourced footnotes — and each has an honest-data rule (treemap area is the only encoding, never clipped or log-scaled, etc).

If you're interested I'd PR whichever you choose, done per the contributing checklist: type reference, SKILL.md row, three static example variants, gallery entries, all gates green. My drafts have hover tooltips and a theme toggle for easy review but I'd ship fully static per ADR 0001.

Full drafts (type specs + honest-data rules): dataviz-types.md — each image below links to the live HTML.

Treemap — hierarchical proportion
Treemap
Sankey — flow between two axes
Sankey
Slopegraph — rank change between two moments
Slopegraph
Dumbbell — paired values per category
Dumbbell
Waffle — discrete part-of-whole
Waffle
Hex tile map — equal-area geography
Hex tile map
Bump chart — rank over time
Bump chart
Streamgraph — composition over time
Streamgraph
Beeswarm — distribution of individuals
Beeswarm
Arc diagram — pairwise relations on a line
Arc diagram
Bubble — three variables at once
Bubble
Ridgeline — many distributions stacked
Ridgeline
Small multiples — same chart, many panels
Small multiples
Marimekko — two-way proportion
Marimekko
Warming stripes — one variable, pure sequence
Warming stripes
Punch card — two categorical axes, count cells
Punch card

Happy to drop any that don't fit, or adjust the examples. Thanks!

Activity

  1. Vitanakpapa commented on Aug 15, 2026

    @Vitanakpapa
  2. cathrynlavery commented on Aug 17, 2026

    @cathrynlavery
    Owner

    Thanks for the unusually complete proposal. I’m keeping this as the quantitative-chart roadmap, but we should not add 16 top-level types at once. Please start with a standalone Treemap PR; Sankey is the next candidate. Slope/bump/stream/ridgeline should be evaluated as Line variants, dumbbell as Bar, beeswarm/bubble as Scatter, and small multiples as a reusable composition primitive. Hex maps and arc diagrams are deferred for now.

  3. 0xDarkMatter commented on Aug 18, 2026

    @0xDarkMatter
    ContributorAuthor

    Thanks @cathrynlavery ! Happy to contribute. I already had a lot of this floating around.

    Actually have a lot of these built already, but didn't want to overwhelm you with a PR tsunami.
    I'll send though one at a time so you can review and merge cleanly.

  4. cathrynlavery commented on Aug 18, 2026

    @cathrynlavery
    Owner

    Treemap has now landed as the 28th visual type in PR #87, including light/dark/editorial examples and area/annotation verification. I\u2019m keeping this roadmap open for the remaining candidates; Sankey remains the next standalone type to evaluate, while the other proposals should continue through the variant/composition decisions above.

  5. 0xDarkMatter commented on Aug 18, 2026

    @0xDarkMatter
    ContributorAuthor

    Thanks! Sankey's underway.

    One heads-up while it's still cheap to change: I'd like it to handle multi-stage flows — source through a couple of intermediate stages to a sink — rather than just source-to-target. That's where most of the interesting flow stories live (spend moving through a pipeline, traffic through routing layers, that sort of thing), and a two-column version can't tell them. Same one-accent, static treatment as everything else, just with staged columns and a legend for the flow classes.

    Shout if you'd rather it stayed simple two-column and I'll scope it back — easier to hear now than at review.

  6. cathrynlavery commented on Aug 18, 2026

    @cathrynlavery
    Owner

    These are amazing, thanks for contributing!

  7. Vitanakpapa commented on Aug 18, 2026

    @Vitanakpapa
  8. Vitanakpapa commented on Aug 19, 2026

    @Vitanakpapa
  9. cathrynlavery commented on Aug 19, 2026

    @cathrynlavery
    Owner

    Roadmap update: Sankey shipped as a canonical diagram type in #118, with light, dark, and full-editorial examples plus its routing, reference, and budget. Treemap and the line-chart slopegraph variant are also shipped. Keeping this issue open for the remaining proposed data-visualization work.

  10. 0xDarkMatter commented on Aug 21, 2026

    @0xDarkMatter
    ContributorAuthor

    With the variant wave in review (#139–#143), four of the original sixteen are still waiting on a routing call from you: waffle, marimekko, warming stripes, and punch card. Happy to build any once they have a home — my guesses, for whatever they're worth:

    • Waffle + punch card — possibly one new parent type between them: a unit grid (regular grid of cells, one mark per cell), with variants distinguished by what positions mean. Waffle: positions meaningless — cells are fixed quanta, filled count is the value. Punch card: rows and columns are categorical axes, mark size carries a per-cell magnitude. One type covers both, gives a future heatmap a parent, and — if you ever un-defer it — the hex tile map slots in as the third sibling (positions approximate geography, hex packing being just cell shape; though that one also brings a curated position dataset with it, which is its own question). If you'd rather not take a new type, waffle standalone is the stronger of the two and punch card defers cleanly.
    • Marimekko — Treemap variant. It's area encoding in a space-filling rectangle, just with axis structure — closer kin to treemap than to a stacked bar.
    • Warming stripes — Timeline variant, or possibly just a named recipe under semantic patterns rather than a drawn type at all.

    No rush — plenty in the queue already. Say where each lands (or "defer") and I'll pick them off one at a time like the others.

  11. cathrynlavery commented on Sep 1, 2026

    @cathrynlavery
    Owner

    Routing call on the last four — thanks for the patience while the variant wave landed (bump and beeswarm are now consolidated on main via #160, so eight of your original sixteen are shipped).

    • Marimekko → Treemap variant. Agreed on the kinship: it's area encoding in a space-filling rectangle, and the treemap verifier's area checks extend naturally. Same shape as the other variant PRs: reference section, three examples, routing-row update, verifier coverage.
    • Waffle → accept, as the unit-grid framing you proposed. A regular grid of discrete cells where filled count is the value is a layout grammar no existing type provides (bar encodes length, treemap area). Because that's a new top-level type, the PR must carry the full §10 shipping set and amend the ADR 0002 counters in the same PR — see docs/adr/0002 for the procedure.
    • Punch card → variant of unit grid, once waffle lands as its canonical form (rows/columns become categorical axes, mark size carries the per-cell magnitude). Please sequence it after waffle rather than bundling.
    • Warming stripes → defer. A chart whose only encoding is a sequential color ramp fights the one-accent system head-on; I'd rather not admit it until we have a principled sequential-ramp story. Happy to revisit.

    Hex tile map and arc diagram stay deferred as before. Streamgraph (#140) I'll review separately. Thanks again — this roadmap has been a genuine pleasure to work through.

  12. 0xDarkMatter commented on Sep 17, 2026

    @0xDarkMatter
    ContributorAuthor

    Noting that #198 (sdhilip200) carries the waffle slot as Unit Grid: 10x10 equal cells, filled count is the value, rows/columns carry no meaning, full §10 set plus the ADR 0002 amendment. That matches the unit-grid framing routed above, so we won't open a competing waffle PR.

    Punch card: sequenced after #198 lands, as a Unit Grid variant on its grammar - the data-unit-* contract, categorical row/column axes, mark size for per-cell magnitude, and verify-unit-grid.py extended with a variant mode rather than a second verifier. Same shape as the other variant PRs: reference section, three examples, routing-row update, verifier coverage. Nothing to bundle into #198.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions