Geospatial
Spike Map
Vertical spikes at locations sized by value, avoiding area distortion of bubble maps.
COVID-19 Cases by City
Spike height ∝ confirmed cases; range 9.5K (Nashville) to 85K (NYC) across 20 US metros
View data (20 rows)
| X | Y | Cases | City |
|---|---|---|---|
| 300 | 145 | 85000 | New York |
| 55 | 195 | 62000 | Los Angeles |
| 220 | 150 | 48000 | Chicago |
| 195 | 235 | 41000 | Houston |
| 90 | 215 | 38000 | Phoenix |
| 295 | 155 | 36000 | Philadelphia |
| 285 | 250 | 35000 | Miami |
| 255 | 215 | 33000 | Atlanta |
| 320 | 130 | 30000 | Boston |
| 185 | 215 | 28000 | Dallas |
| 290 | 165 | 26000 | Washington DC |
| 50 | 90 | 22000 | Seattle |
| 40 | 175 | 21000 | San Francisco |
| 240 | 145 | 20000 | Detroit |
| 195 | 125 | 19000 | Minneapolis |
| 140 | 175 | 18000 | Denver |
| 215 | 180 | 16000 | St. Louis |
| 50 | 110 | 14000 | Portland |
| 110 | 165 | 11000 | Salt Lake City |
| 230 | 200 | 9500 | Nashville |
Use a spike map when…
- Dense point data where bubbles overlap
- Population or case counts at locations
Avoid when…
- Few data points
- When bubble metaphor is more intuitive
Data it needs
| Property | Value |
|---|---|
| Min Rows | 3 |
| Min Columns | 3 |
| Column Types | stringnumbernumber |
| Notes | The two numeric columns are longitude and latitude; the third numeric column is the value driving spike height. |
Visual anatomy
Marks
line (vertical)
Channels
heightposition (lat/lon)
Axes
geographic coordinates
Guiding principles
Consider instead
Common mistakes
Spikes overlapping
No scale reference (always include a 'spike of height X = Y units' legend)
History
Popularized during COVID-19 pandemic mapping by the NYT and other outlets (2020).
Accessibility notes
Render the underlying location/value rows as a sortable a11y data table beneath the map — spikes are inherently inaccessible to non-visual readers without it.
Related reading
Got data? Let's see what works.
Drop your CSV. You'll get a Spike Map plus four alternatives - ranked by which one actually fits your data best.