02. 파이썬 다이어그램 렌더링 엔진 작동법 (Python)
1. 학습 목표 (Learning Objectives)
- 손으로 대충 크기를 맞추어 그리는 아날로그 벤 다이어그램의 한계를 벗어납니다.
- 파이썬의 데이터 시각화 모듈인
matplotlib_venn라이브러리를 통해, 집단의 숫자 볼륨(크기)에 비례하여 원의 크기와 겹치는 영역이 자동으로 리스케일링(Rescaling) 되는 차트를 코딩합니다.
2. 왜 코딩으로 다이어그램을 그려야 할까?
수학 교과서에 그려져 있는 벤 다이어그램 그림들은 사실 A집합과 B집합의 원소가 1개든 1,000만 개든 똑같은 크기의 동그라미 두 개로 그려진 ‘개념도(Conceptual Diagram)’일 뿐입니다. 하지만 데이터 과학의 영역으로 넘어오면 원의 크기가 굉장히 중요합니다!
예를 들어 게임 유저층 분석에서,
- A 고객군: 무과금 라이트 유저 (1,000만 명)
- B 고객군: 월 천만 원 랭커 핵과금러 (100명) 이 두 집단의 벤 다이어그램을 그릴 때 크기가 같으면 안 됩니다. A가 압도적으로 거대한 행성(목성)만 해야 하고, B는 아주 작은 운석(달) 모양으로 렌더링되는 것이 현실 데이터에 맞습니다.
3. 파이썬 matplotlib_venn 시뮬레이터 가동 (Python)
파이썬에는 통계학자와 데이터 과학자들의 전폭적인 지원을 받는 전용 시각화 라이브러리가 존재합니다. 이 라이브러리에게 A 고유 영역 크기, B 고유 영역 크기, 그리고 $A \cap B$(교집합) 영역 크기를 알려주면 컴퓨터가 물리 법칙을 연산하여 최적의 비율로 동그라미를 겹쳐 그려줍니다!
# ※ 주의: 이 코드를 로컬 환경에서 실행하려면 사전에 라이브러리 세팅이 필요합니다.
# 터미널 명령어: pip install matplotlib matplotlib-venn
import matplotlib.pyplot as plt
from matplotlib_venn import venn2
# matplotlib 차트 도화지 셋팅
plt.figure(figsize=(8, 6))
# 1. 데이터 입력 (핵심 엔진)
# 인자 설명 => subsets=(A만의 순수 크기, B만의 순수 크기, 교집합의 크기)
# A집단(100명), B집단(20명), 그리고 두 곳 모두에 속한 교집합(8명)
venn_data = (100, 20, 8)
# 2. 벤 다이어그램 자동 렌더링 발사!
v = venn2(subsets=venn_data, set_labels=('Group A (Light Users)', 'Group B (Whale Users)'))
# 3. 색상과 투명도, 텍스트 스타일 커스텀 디자인 (Optional)
v.get_patch_by_id('10').set_color('skyblue') # 순수 A 영역
v.get_patch_by_id('10').set_alpha(0.6)
v.get_patch_by_id('01').set_color('salmon') # 순수 B 영역
v.get_patch_by_id('01').set_alpha(0.8)
v.get_patch_by_id('11').set_color('purple') # 교집합 영역
v.get_patch_by_id('11').set_alpha(0.9)
# 타이틀 추가
plt.title("Auto Rescaling Venn Diagram by Python Engine", fontsize=16, fontweight='bold')
# 차트 시뮬레이션 창 팝업!
plt.show()
파이썬의 실행 결과 요약:
코드를 실행하면 즉시 아주 정교하고 아름다운 다이어그램 창이 뜹니다. 우리가 손으로 그린다면 동그라미 크기를 고만고만하게 그렸겠지만, 파이썬이 연산한 차트에서는 거대하고 뚱뚱한 파란색 원(A)과 아주 쪼그마한 붉은색 원(B)이 극명한 대조를 이룹니다. 이처럼 실제 코딩의 세계에서는 벤 다이어그램이 단순한 수학 문제를 넘어서 직관적이고 시각적인 데이터 밀도 측정 도구 비율로 응용되고 있습니다.
4. 학습 정리 (Summary)
- 정량적 벤 다이어그램: 데이터의 실재하는 숫자에 맞추어 원의 픽셀 스케일과 교차 면적의 뚱뚱함을 100% 비율에 맞게 렌더링 한 전문 데이터 시각화 차트 형태입니다.
matplotlib_venn: 파이썬 환경의 고강도 시각화 엔진의 플러그인 모듈로, 세 가지 혹은 네 가지 집단의 순수/교집합 변수 값만 던져주면 즉시 색상 혼합이 잘 조화된 아름다운 스케일링 벡터 다이어그램을 모니터에 출력해 내는 강력한 툴입니다.
서브목차