A spiral plot maps time-series data along an Archimedean spiral:
a curve defined by r = a + bθ, where r is the radius from center and
θ is the angle. Each period (month) occupies an equal angular increment
(2π ÷ periodsPerCycle), and the spiral grows outward with each complete
revolution. The perceptual mechanism is angular alignment: because
each cycle occupies exactly one revolution, the same period in different cycles
appears at the same angle in every arm. The viewer scans radially outward
and sees whether April (right side) is always short — confirming a seasonal trough —
without mentally aligning separate lines from different years.
A standard time-series line chart over 48 months shows the trend clearly — but to confirm periodicity, the viewer must mentally fold the line back on itself every 12 months and check whether peaks align. That is a non-trivial cognitive task performed entirely in working memory. The spiral performs that folding physically: the chart is already organized so that the same month in 2021, 2022, 2023, and 2024 occupies the same angular position. The periodic structure is encoded in the layout, not left as an inference task for the viewer. The cost: radial distance from center is harder to compare precisely than bar length along a common baseline. The spiral trades precise value reading for structural pattern visibility.
The spiral used here is Archimedean (equidistant spacing between
arms), not logarithmic or Fermat's. Equidistant arm spacing means each year's ring
has the same radial depth — the same maximum bar height is available for every year.
A logarithmic spiral would compress inner years and expand outer years, visually
underweighting early data. An equidistant spiral is the honest geometric
choice when all cycles contain equally important data. The implementation
uses r_i = innerR + (i ÷ periodsPerCycle) × armSpacing, giving each
year exactly armSpacing pixels of radial depth, regardless of
absolute data magnitude.
The spiral simultaneously shows two temporal signals: the within-cycle seasonal pattern (which months peak, which trough) and the across-cycle trend (do bars at the same angle grow larger in each successive arm?). In this dataset, both are visible. The Q4 cluster (Oct–Dec, top-left quadrant) grows taller arm by arm — the seasonal peak intensifies. April bars (right side) also grow but remain the shortest at each arm — the seasonal trough persists. A line chart with a 12-month moving average would show the trend but flatten the seasonality. A seasonal decomposition chart would separate both signals but destroy their geometric relationship.
The seminal papers on spiral plots — Carlis & Konstan (1998) and Weber, Alexa & Müller (2001) — both identify the core trade-off: the spiral excels at revealing periodic structure and is weaker at supporting precise value extraction. The FT Visual Vocabulary classifies this under Change over time with a note on pattern detection. Tufte's principle of small multiples is adjacent: a 4-panel year-over-year small multiple would offer better precision but destroy the angular alignment that makes the periodic pattern immediately visible. The spiral is the minimum-redundancy solution for showing periodicity in data that exceeds two or three cycles — the angular alignment conveys the pattern in one view that a small multiple requires four to establish.
January is placed at 12 o'clock (angle = 0 in d3.arc() convention),
and the spiral proceeds clockwise. This aligns the calendar cycle
with the viewer's intuitive reading of a clock face — January at top,
April at right, July at bottom, October at left. An arbitrary starting angle
(common in academic implementations) produces a correct chart that no one
can read without a legend. Placing January at 12 o'clock costs nothing
mathematically (theta = (i / periodsPerCycle) × 2π, with d3.arc's
native 0-at-top convention) and produces a chart where a viewer immediately
knows that the tall cluster of bars in the upper-left is Q4 (Oct–Nov–Dec)
without reading a single label. The calendar anchor turns the chart from
a pattern detector into a legible, self-orienting instrument.