29 September 2026

The problem with flat maps

R’s built-in quakes dataset records 1,000 earthquakes near Fiji, each with a latitude, a longitude, a magnitude — and a depth, running from 40 km to 680 km below the surface.

On an ordinary map that fourth variable has to be faked with colour, because a map only has two dimensions to spend. You can see that depth varies, but you cannot see the shape it makes.

These earthquakes are not scattered at random. They mark the Pacific Plate sliding beneath the Australian Plate, and that slab is a genuinely three-dimensional object: a sheet of rock, tilted, descending hundreds of kilometres into the mantle.

So plot it in three dimensions and let the reader turn it around.

The slab, rendered

What rotating it reveals

Turn the plot so you are looking along the trench and the scatter resolves into a plane. That plane is the subducting slab, and three things become obvious that a flat map cannot show:

  • It is a sheet, not a cloud. The earthquakes occupy a thin, well-defined surface only a few tens of kilometres thick, tilted at roughly 45 degrees.
  • It dips westward. Shallow events sit on the eastern edge near the trench; follow the sheet down and to the west and you reach 600+ km.
  • It stops. Almost nothing occurs below about 680 km — the depth at which the descending rock becomes too warm and ductile to fracture, so it deforms silently instead of breaking.

The largest earthquakes (biggest markers) cluster in the shallow portion, which is also the part closest to populated islands.

Why interactivity earns its place here

A static 3D render would be worse than useless: any single viewing angle collapses the structure back into an ambiguous blob. The geometry is only legible because the reader can rotate it.

The depth distribution is strikingly bimodal — a shallow cluster under 100 km and a deep one past 500 km, with a quieter middle. That gap is a real feature of subduction zones, not a sampling artefact.

Reproducibility

Every figure here is generated from datasets::quakes, which ships with base R — no downloads, no API keys, no local files. The document rebuilds from source with:

library(plotly)
data(quakes)
plot_ly(quakes, x = ~long, y = ~lat, z = ~-depth, type = "scatter3d",
        mode = "markers", color = ~depth, size = ~mag)

Built with R 4.6.1 and plotly 4.12.1 on 29 September 2026.

Data: Harvard PRIM-H project, distributed with R.