Skip to content
Historical Data Visualisation

To visualise space and time together, the safest default is a series of small-multiple maps — one map per period, all sharing identical extent, projection and colour scale — because every snapshot stays directly comparable. Animation and the 3D space-time cube are powerful alternatives but demand more care: animation taxes the viewer's memory, and the cube needs interactivity to be legible. Whichever you choose, fix the scales, use period-correct boundaries, and document every choice so the result is defensible.

What are the main ways to combine space and time?

Three approaches dominate, each with a clear sweet spot:

MethodBest forMain weakness
Small-multiple mapsComparing snapshots, printLimited number of periods
Animated mapShowing a process, engagementViewer cannot compare frames
Space-time cubeIndividual trajectoriesHard to read aggregates; needs 3D interaction
Time-flattened (flow/trail map)Net movement over a spanLoses intermediate timing

Start with small multiples. They turn time into space — laying periods side by side — so the reader compares with their eyes rather than their memory. Reach for the others only when the question genuinely needs them.

Why are small-multiple maps the safest default?

Because comparison is built in. A 3x3 grid of maps for 1801, 1851, 1901 and so on lets a reader scan across decades and spot where growth concentrated, all without animation's memory load. The discipline that makes them work is consistency: identical extent, identical projection, identical colour scale across every panel. Break any of those and the comparison silently lies. The cost is that you can only show a handful of periods before panels shrink too far — typically six to twelve.

Are animated maps worth it?

Animation is engaging and good at conveying process — the spread of a railway network, the advance of a frontier. But it has a fundamental flaw: viewers cannot compare the current frame to one they saw five seconds ago. Memory, not perception, becomes the bottleneck. Best practice is to never ship animation alone:

  • Provide a scrubber so viewers control the timeline, not just play/pause.
  • Always pair it with a static small-multiple version for study and citation.
  • Keep the colour scale and extent fixed across all frames.

Treat animation as the engaging front door and small multiples as the analytical room behind it.

How do you keep scales and boundaries honest?

Two consistency rules carry most of the weight.

Fix the colour scale globally. Compute the minimum and maximum across all time slices once, then apply that range to every map. Per-slice rescaling makes a steady value flicker as if it were changing:

python
# Fix the choropleth scale across ALL years, not per-year
vmin = gdf["value"].min()
vmax = gdf["value"].max()
for year, layer in gdf.groupby("year"):
    layer.plot(column="value", vmin=vmin, vmax=vmax, cmap="viridis")

Use period-correct boundaries. Draping modern county lines over 1801 data attributes figures to units that did not yet exist. A historical GIS with time-stamped boundary layers, or a gazetteer that models how places changed, keeps each snapshot geographically honest. QGIS's TimeManager / temporal controller and time-enabled layers help align data to the right geography per slice.

What is a space-time cube and when does it fit?

The space-time cube stacks 2D map layers along a vertical time axis, so a single moving entity traces a diagonal path upward through the volume — ideal for individual trajectories like a ship's voyage or a person's life path. Its strength is also its limit: it reads well for a few trajectories but turns to mush for aggregate density, and it is nearly unusable as a flat image because the 3D structure needs rotation. Use it interactively (in tools like the cube view in some GIS extensions) and only when individual paths, not totals, are the point.

A reusable spatiotemporal checklist

Before publishing, confirm:

  1. Extent, projection and colour scale are identical across all time slices.
  2. The colour scale uses the global min/max, not per-slice ranges.
  3. Each slice uses period-correct boundaries, not modern ones.
  4. Time intervals are equal, or unequal intervals are labelled.
  5. Any animation has a scrubber and a static small-multiple fallback.
  6. Missing periods are shown as gaps, not skipped silently.
  7. A caption documents projection, scale, boundary source and time bins.

Key Takeaways

  • Small-multiple maps are the safest default: time becomes space, comparison is built in.
  • Fix extent, projection and colour scale identically across every time slice.
  • Use the global min/max for the colour scale so steady values do not appear to change.
  • Use period-correct boundaries; never drape modern borders over historical data.
  • Animation conveys process but taxes memory — always pair it with a static fallback and a scrubber.
  • The space-time cube suits individual trajectories, not aggregate patterns, and needs 3D interaction.
  • Document projection, scale, boundary source and time bins in the caption for defensibility.

Frequently Asked Questions

What are the main ways to show space and time together?

The three main approaches are small-multiple maps (one map per period), animated maps (time as playback), and the space-time cube (a 3D stack of map layers). Small multiples are the safest default because every snapshot stays directly comparable.

Are animated maps a good idea?

Animated maps engage but tax memory — viewers cannot compare a frame to one they saw seconds ago. Pair any animation with a static small-multiple version so readers can study the sequence at their own pace and cite specific moments.

How do I handle boundaries that changed over time?

Use period-correct boundaries for each time slice rather than draping modern borders over historical data. A historical GIS with time-stamped boundary layers, or a gazetteer that models place change, keeps each snapshot geographically honest.

What is a space-time cube?

A space-time cube stacks map layers along a vertical time axis so a moving point traces a diagonal path through the 3D volume. It is powerful for individual trajectories but hard to read for aggregate patterns and needs interactivity to be usable.

How do I keep colour consistent across time slices?

Fix the colour scale across all time slices using the global minimum and maximum, not per-slice ranges. A scale that rescales each frame makes a steady value look like it is changing and destroys comparability.