Bubble Map
chartAlso known as: proportional symbol map, graduated symbol map, circle map
설명 / Description
버블 맵은 지리적 위치에 원(또는 다른 기호)을 배치하고, 각 원의 면적을 정량적 값에 비례하도록 표현합니다. 이는 지도의 위치 정보와 버블 차트의 크기 인코딩을 결합하여, 독자가 무언가가 어디에 있는지와 그 양이 얼마나 되는지를 동시에 볼 수 있게 합니다. 흔한 활용 사례로는 도시 인구, 지진 규모, 지역별 매출, 질병 발생 건수 표시 등이 있습니다.
A bubble map places circles (or other symbols) at geographic locations, with the area of each circle proportional to a quantitative value. This combines the positional information of a map with the magnitude encoding of a bubble chart, allowing readers to see both where something is and how much of it there is. Common applications include showing city populations, earthquake magnitudes, sales by location, and disease case counts.
버블 맵은 코로플레스 맵의 핵심 약점인 큰 영역의 시각적 지배력 문제를 해결합니다. 코로플레스 맵에서는 지리적으로 넓지만 인구가 희박한 지역(시베리아나 몬태나 같은)이 실제보다 과도한 주목을 받습니다. 버블 맵은 데이터 인코딩을 지리적 면적과 분리하여 데이터 값 자체에 온전히 초점을 맞춥니다. 값이 큰 작은 도시는 지리적 크기와 무관하게 큰 버블을 갖게 됩니다.
Bubble maps address a key weakness of choropleths: the visual dominance of large regions. In a choropleth, geographically large but sparsely populated regions (like Siberia or Montana) draw disproportionate attention. Bubble maps decouple the data encoding from the geographic area, placing the emphasis squarely on the data values. A small city with a large value gets a large bubble regardless of its geographic footprint.
가장 큰 지각적 과제는 사람이 면적 차이를 과소평가한다는 점입니다: 면적이 두 배인 원이 두 배로 커 보이지 않습니다. 값의 제곱근으로 스케일링하여(반지름이 아니라 면적이 비례하도록) 이를 완화할 수 있지만 편향을 완전히 없애지는 못합니다. 정밀한 비교를 위해서는 툴팁이나 데이터 레이블이 필수적인 보완책입니다. 밀집한 지역에서 버블이 겹치는 문제는 투명도, 충돌 감지, 지터링(jittering)으로 완화할 수 있습니다.
The primary perceptual challenge is that humans underestimate area differences: a circle with twice the area does not look twice as big. Scaling by the square root of the value (so that area, not radius, is proportional) helps but does not fully eliminate the bias. For precise comparisons, tooltips or data labels are essential supplements. Overlapping bubbles in dense regions are another concern, mitigated by transparency, collision detection, or jittering.
언제 사용하나 / When to Use
- 위치와 크기가 모두 중요한 지리적 위치에서 정량적 값을 보여줄 때
- Showing quantitative values at geographic locations where both position and magnitude matter
- 코로플레스 맵의 면적 왜곡 없이 도시, 시설, 지역 간 값을 비교할 때
- Comparing values across cities, facilities, or regions without the area distortion of choropleths
- 지도 위에 이벤트 규모(지진, 발병, 사건)를 표시할 때
- Displaying event magnitudes (earthquakes, outbreaks, incidents) on a map
- 데이터가 영역 집계가 아니라 지점 위치를 나타낼 때
- When the data represents point locations rather than area aggregates
- 공간 분석을 위해 기준 지도 위에 정량적 차원을 오버레이할 때
- Overlaying a quantitative dimension on a reference map for spatial analysis
이럴 땐 피하세요 / When NOT to Use
- 데이터가 지역별 비율이나 밀도일 때 -- 코로플레스 맵을 사용하세요(비율을 버블로 표시하면 면적 기반 측정치를 왜곡하므로 부적절합니다)
- When the data is a rate or density across regions -- use a choropleth (rates should not be shown as bubbles since they misrepresent area-based measures)
- 버블이 심하게 겹쳐 개별 값을 읽을 수 없을 때 -- 먼저 집계하거나 필터링하세요
- When bubbles overlap so heavily that individual values are unreadable -- aggregate or filter first
- 값의 정밀한 비교가 중요할 때 -- 면적 지각은 부정확합니다; 지도와 함께 막대 차트를 사용하세요
- When precise comparison of values is critical -- area perception is imprecise; use a bar chart alongside the map
- 지리적 맥락이 중요하지 않을 때 -- 독립적인 버블 차트나 막대 차트를 사용하세요
- When geographic context is not important -- use a standalone bubble chart or bar chart
구조 / Anatomy
- 기본 지도: 공간적 맥락을 위해 경계, 해안선, 지형을 보여주는 지리적 참조 레이어.
- Base map: Geographic reference layer showing boundaries, coastlines, or terrain for spatial context.
- 버블(원): 지리적 좌표를 중심으로 그려진 원; 면적은 정량적 값에 비례합니다.
- Bubbles (circles): Circles centered at geographic coordinates; area is proportional to the quantitative value.
- 색상 인코딩: 범주(유형, 지역)나 순차 스케일을 사용하는 두 번째 정량 변수에 따라 버블 채우기 색이 정해집니다.
- Color encoding: Bubble fill colored by category (type, region) or by a second quantitative variable using a sequential scale.
- 불투명도: 반투명 채우기는 겹치는 버블을 다루고 밀도를 드러내는 데 도움이 됩니다.
- Opacity: Semi-transparent fills help with overlapping bubbles and reveal density.
- 크기 범례: 원의 면적이 값에 어떻게 대응하는지 보여주는 참조 자료(예: 값이 표시된 세 개의 단계별 원).
- Size legend: A reference showing the mapping from circle area to value (e.g., three graduated circles labeled with their values).
- 툴팁/레이블: 호버 시 정확한 값과 위치 이름을 보여주는 세부 정보.
- Tooltips/labels: On-hover detail showing the exact value and location name.
변형 / Variations
- 단계별 기호 지도: 값에 비례하여 원이 아닌 다른 기호(사각형, 삼각형)를 사용합니다; 원이 가장 일반적입니다.
- Graduated symbol map: Uses symbols other than circles (squares, triangles) proportional to values; circles are the most common.
- 돌링 카토그램: 버블이 지리적 영역을 완전히 대체합니다; 위치는 근사치이지만 면적 인코딩은 겹침 없이 유지됩니다.
- Dorling cartogram: Bubbles replace geographic regions entirely; position is approximate but area encoding is preserved without overlap.
- 다변량 버블 맵: 버블 크기가 한 변수를, 색상이 두 번째 변수를 인코딩하여 이변량 분석이 가능합니다.
- Multi-variable bubble map: Bubble size encodes one variable and color encodes a second, enabling bivariate analysis.
- 애니메이션 버블 맵: 버블이 시간에 따라 커지거나 작아지며 지리적 맥락에서 시간적 변화를 보여줍니다.
- Animated bubble map: Bubbles grow or shrink over time to show temporal change in a geographic context.
- 클러스터 버블 맵: 낮은 줌 레벨에서는 인접한 버블이 집계되고, 확대하면 개별 지점이 드러납니다.
- Clustered bubble map: At low zoom levels, nearby bubbles are aggregated; zooming reveals individual points.
코드 레퍼런스 / Code Reference
// Observable Plot - bubble map
Plot.plot({
projection: "albers-usa",
marks: [
Plot.geo(stateBoundaries, { stroke: "#ccc", strokeWidth: 0.5 }),
Plot.dot(cities, {
x: "longitude",
y: "latitude",
r: d => Math.sqrt(d.population) / 100,
fill: "region",
fillOpacity: 0.6,
stroke: "white",
strokeWidth: 0.5,
tip: true
})
],
color: { legend: true, label: "Region" },
r: { range: [3, 40] }
})