HAHS.
Back to Catalog

Dot Map

chart

Also known as: dot density map, dot distribution map, point map

Show geographyShow distribution GeographicNumericalCategorical Map

Description

A dot map places individual dots on a geographic base map to represent the location of discrete events, entities, or quantities. In its simplest form, each dot corresponds to a single observation (a crime, a store, a person), plotted at its geographic coordinates. In the dot density variant, each dot represents a fixed number of units (e.g., 1 dot = 500 people), and dots are distributed within geographic boundaries to approximate the spatial distribution of the underlying data.

Dot maps excel at revealing spatial patterns that choropleths obscure. Because choropleths color entire regions uniformly, they hide within-region variation and are distorted by region size. Dot maps, in contrast, show where things actually are — or approximately are — making concentrations, voids, corridors, and gradients immediately visible. The famous “racial dot map” of the United States (by Dustin Cable, 2013) demonstrated how placing one dot per person, colored by race, could reveal neighborhood-level segregation patterns invisible in any choropleth.

The challenge with dot maps is that dots overlap in dense areas, creating visual saturation, while sparse areas appear empty. Zoom-and-pan interaction, dynamic aggregation (clustering dots at lower zoom levels), and opacity control are essential for handling varying densities. The choice of dot size and the one-dot-to-N ratio also critically affect the map’s readability.

Dot Map — interactive example

When to Use

  • Showing the spatial distribution of point events (incidents, observations, facilities)
  • Revealing within-region variation that choropleths hide
  • Displaying population or demographic distributions with fine spatial resolution
  • When the data has precise coordinates and geographic context matters
  • Comparing spatial distributions of two or more categories using colored dots

When NOT to Use

  • When you have area-aggregated data without point locations — use a choropleth instead
  • When dots are so dense that the entire map is saturated — consider a heatmap overlay or binned hexagons
  • When the geographic dimension is not important — use a scatterplot or histogram
  • When precise counts per region matter — dots are hard to count; use a bar chart with a map for context

Anatomy

  • Base map: A geographic reference layer showing boundaries, coastlines, or terrain.
  • Dots: Circular marks placed at geographic coordinates or randomly within region boundaries (dot density variant).
  • Dot-to-value ratio: The fixed number of units each dot represents (e.g., 1 dot = 100 people).
  • Color encoding: Dots colored by category (race, type, party) to show multiple distributions simultaneously.
  • Transparency/opacity: Applied to dots to handle overlap and reveal density through visual accumulation.
  • Legend: Explaining what each dot represents and what colors mean.

Variations

  • One-to-one dot map: Each dot is a single observation at its exact location (event mapping, facility locations).
  • Dot density map: Dots are randomly placed within region boundaries; each dot represents N units. Provides more spatial nuance than a choropleth.
  • Multi-category dot map: Dots in different colors show the spatial distribution of multiple groups on the same map.
  • Graduated dot map: Dot size varies by value, transitioning into a bubble map.
  • Clustered dot map: At low zoom levels, nearby dots are aggregated into clusters with count labels, expanding on zoom.

Code Reference

// Observable Plot - dot map with geographic coordinates
Plot.plot({
  projection: "albers-usa",
  marks: [
    Plot.geo(statesMesh, { stroke: "#ccc", strokeWidth: 0.5 }),
    Plot.dot(events, {
      x: "longitude",
      y: "latitude",
      r: 2,
      fill: "type",
      opacity: 0.5,
      tip: true
    })
  ],
  color: { legend: true, label: "Event type" }
})