Each bubble is a metro; area = aggregate RIA AUM in that metro. The choropleth tells you the state story; this tells you the city story. Best for event geography, top-tier metro targeting, and any conversation where "where the dollars actually concentrate" is the question.
D3 v7 + us-atlas TopoJSON. Each metro needs name, state, lng, lat, aum.
const METROS = [ { name: "New York", state: "NY", lng: -74.0, lat: 40.7, aum: 1800 }, // ... etc ];
Magnitude on geography. Add a second dimension via color (e.g., growth rate). Skip when distribution is too even — you'll get a uniform field of dots. Use a choropleth instead.
Bubble area, not radius, encodes magnitude. Always include a size legend or hover-tooltip so readers can decode. Slight transparency so overlapping bubbles stay legible.