Matplotlib-venn으로 그린 벤 다이어그램에서 글꼴 크기를 수정하려면 set_fontsize() 메서드를 사용하면 됩니다. 이 메서드를 활용하면 집합 레이블(set_labels)과 부분 집합 레이블(subset_labels)의 텍스트 크기를 자유롭게 조절할 수 있습니다.
구현 단계
- 그림(figure) 크기를 설정하고, 서브플롯 사이 및 주변의 여백(padding)을 자동으로 조정합니다.
- 벤 다이어그램에 사용할 세 개의 집합을 생성합니다.
- 3개 집합의 면적 비율에 맞게 그려지는 area-weighted 벤 다이어그램을 플로팅합니다.
- set_labels(집합 이름 레이블)와 subset_labels(교집합 개수 레이블)의 글꼴 크기를 설정하기 위해 set_fontsize() 메서드를 호출합니다.
- 최종 결과를 화면에 표시하려면 show() 메서드를 사용합니다.
예제 코드
from matplotlib import pyplot as plt
from matplotlib_venn import venn3
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
set1 = {'a', 'b', 'c', 'd'}
set2 = {'a', 'b', 'e'}
set3 = {'a', 'd', 'f'}
out = venn3([set1, set2, set3], ('Set1', 'Set2', 'Set3'))
for text in out.set_labels:
text.set_fontsize(25)
for text in out.subset_labels:
text.set_fontsize(12)
plt.show()실행 결과
위 코드를 실행하면 집합 이름 레이블(Set1, Set2, Set3)은 25pt 크기로, 각 영역의 원소 개수 레이블은 12pt 크기로 표시된 3-set 벤 다이어그램이 출력됩니다.

핵심 포인트 정리
venn3() 함수가 반환하는 객체에는 set_labels와 subset_labels라는 텍스트 객체 목록이 포함되어 있습니다. 각 텍스트 객체에 대해 반복문을 돌며 set_fontsize()를 호출하면 레이블별로 다른 글꼴 크기를 적용할 수 있습니다. 참고로 subset_labels는 값이 없는 영역의 경우 None일 수 있으므로, 실무에서는 None 체크를 추가해 주는 것이 안전합니다.