Lattice

Components Chart

quadrant

Evidence Scatter Series

Native 2×2 scatter chart — items plotted on two continuous axes.

Open in Playground
Variant

Use to position items by two numeric attributes (cost × value, effort × impact). Data-driven; for static categorical 2×2 grids, use matrix-2x2.

two-by-twopositioningprioritizerisk

When to use

  • Two numeric axes carry the analysis. Effort × impact, cost × value, probability × severity, reach × confidence. Both axes are continuous and the position on each genuinely matters — that's the argument quadrant is built to make.
  • Categorical grouping clusters the dots. Items grouped under list headings (Strategic Bets, Quick Wins, Defer, Time Sinks) share a colour, so the eye can read the cluster before the individual point. The grouping is editorial, not derived from coordinates.
  • Six to twelve items. Below six the chart wastes the canvas — write it as prose. Past twelve the labels overlap and the quadrant becomes a constellation. Trim the long tail or break it across two slides.

When not to use

  • Static categorical 2×2. If the quadrants are fixed labels (Important × Urgent, Build × Buy × Partner × Defer) and items are placed by category not coordinate, use matrix-2x2. quadrant is data-driven; matrix-2x2 is conceptual.
  • Single axis matters. If one axis is decorative and only the other carries meaning, you have a ranking, not a scatter. Use progress for percent-complete or kpi for ranked metrics with status.
  • Coordinates without an audience-shared scale. If 8, 80 requires a footnote to interpret, the slide doesn't pay off. Either label the axis units in the eyebrow (Effort 0–10 → Reach 0–100) or normalise to a familiar scale before authoring.

Authoring

<!-- _class: quadrant -->

`Effort 0–10 → Reach 0–100`

## Where to put the next dollar, having spent the last one on a workshop.

Effort estimated in story-points; reach as percent of addressable teams.

- Strategic Bets
  - Scoring model v2 `3, 70`
  - Per-team calibration `5, 85`
- Quick Wins
  - Weekly signal brief `8, 80`
  - Snapshot exports `9, 55`
- Defer
  - Vendor scoping `2, 30`
  - Manual recalibration `1, 22`
- Time Sinks
  - Custom audit log UI `7, 18`
  - Bespoke board export `9, 28`

Slots

SlotSelectorRequiredDescription
title h2 yes Slide heading framing the analysis.
axes p > code no Optional axis-label eyebrow (inline-code paragraph).
items ul > li yes One li per item. Format: Label — x, y[, size].

Anatomy

┌─────────────────────────────────────────┐
│  header                                 │
│         Quadrant chart heading          │
│                                         │
│    high ▲    ◆       ◆                  │
│         │ ◆    ●                        │
│         │       ●  ◆                    │
│         │  ●         ●                  │
│     low └──────────────►                │
│           low        high               │
│  footer                           1/19  │
└─────────────────────────────────────────┘

Variants

bubble — Bubble — third value sizes the dot

A third number in each pill (x, y, size) scales the dot by honest √-area. Use when a magnitude — revenue, headcount, spend — rides alongside the two positioning axes.

<!-- _class: quadrant bubble -->

`Effort 0–10 → Reach 0–100`

## Where to put the next dollar — sized by revenue nobody has booked yet.

- Strategic Bets
  - Scoring model v2 `3, 70, 2.4`
  - Per-team calibration `5, 85, 4.1`
- Quick Wins
  - Weekly signal brief `8, 80, 0.9`
  - Snapshot exports `9, 55, 0.6`
- Defer
  - Vendor scoping `2, 30, 0.4`
- Time Sinks
  - Custom audit log UI `7, 18, 1.3`

trail — Trail — before → after

Two coordinate pills per item (x, y then x2, y2) draw a trail from the old position to the new one. Use to show how initiatives moved across a period.

<!-- _class: quadrant trail -->

`Effort 0–10 → Reach 0–100`

## How each bet moved after one quarter — mostly to the left, where the work is cheaper to describe.

- Strategic Bets
  - Scoring model v2 `5, 60` `3, 78`
  - Per-team calibration `7, 70` `5, 88`
- Quick Wins
  - Snapshot exports `9, 45` `8, 62`
- Time Sinks
  - Custom audit log UI `6, 25` `7, 16`

cohort — Cohort — convex-hull tint per group

Tints a convex hull behind each top-level group so the clusters read as cohorts, not just loose dots. Use when group membership is part of the argument.

<!-- _class: quadrant cohort -->

`Effort 0–10 → Reach 0–100`

## Where to put the next dollar — clustered by theme, themed by whoever owns the slide.

- Strategic Bets
  - Scoring model v2 `3, 70`
  - Per-team calibration `5, 85`
- Quick Wins
  - Weekly signal brief `8, 80`
  - Snapshot exports `9, 55`
- Defer
  - Vendor scoping `2, 30`
  - Manual recalibration `1, 22`
- Time Sinks
  - Custom audit log UI `7, 18`
  - Bespoke board export `9, 28`

threshold — Threshold — target lines + zones

Replaces the centre midlines with target lines declared in the eyebrow (· targets tx, ty) and labels the resulting zones. Use for go/no-go reads against an explicit bar.

<!-- _class: quadrant threshold -->

`Effort 0–10 → Reach 0–100 · targets 5, 50`

## Against the go/no-go thresholds nobody has agreed to enforce.

- Strategic Bets
  - Scoring model v2 `3, 70`
  - Per-team calibration `5, 85`
- Quick Wins
  - Weekly signal brief `8, 80`
- Defer
  - Vendor scoping `2, 30`
- Time Sinks
  - Custom audit log UI `7, 18`

magic — Magic — MQ tribute

A Gartner-style Magic Quadrant tribute: vendor labels and the iconic Leaders / Challengers / Visionaries / Niche Players quadrant names. Order the groups TL → TR → BL → BR.

<!-- _class: quadrant magic -->

`Completeness of vision 0–100 → Ability to execute 0–100`

## The decision-tooling Magic Quadrant, in which the tool we built is a Leader.

- Challengers
  - Productboard `30, 82`
- Leaders
  - Sprig + Log `85, 88`
  - Chorus `72, 76`
- Niche Players
  - Notion build-out `25, 28`
- Visionaries
  - Spreadsheet `82, 34`

minimal — Minimal — no fill, faint grid

Composable modifier: drops the quadrant fills for a faint grid and bare dots. Layers on the default or any quadrant variant when the tinting would compete with the dots.

<!-- _class: quadrant minimal -->

`Effort 0–10 → Reach 0–100`

## Where to put the next dollar — unadorned, like the budget that funds it.

- Strategic Bets
  - Scoring model v2 `3, 70`
  - Per-team calibration `5, 85`
- Quick Wins
  - Weekly signal brief `8, 80`
  - Snapshot exports `9, 55`
- Defer
  - Vendor scoping `2, 30`
- Time Sinks
  - Custom audit log UI `7, 18`