less than 1 minute read

python으로 venn diagram을 그릴 수 있게 해주는 matplitlab의 venn2, venn3은 그룹 3개를 최대로 그릴 수 있다. 하지만 분석을 하다보면 4,5,6개 그룹으로 이루어진 venn diagram을 그려야 하는 경우도 많이 생긴다.

일반적인 2,3개 그룹으로 이루어진 venn diagram을 다음과 같이 그릴 수 있다.

from matplotlib import pyplot as plt
from matplotlib_venn import venn2, venn3

venn3([{1,2,3,4}, {2,3,5,6}, {2,6,8}], ('A', 'B', 'C'))
plt.title('Venn Diagram')
plt.show()

그리고, 4개 이상의 그룹으로 이루어진 venn diagram을 그리려면 pyvenn 모듈을 설치해야한다. 안타깝게 pip로는 설치 할 수 없고, github에서 소스파일을 다운로드 가능하다.

아래는 그룹이 4개인 venn diagram 그리기

import sys
sys.path.insert(0, '.../pyvenn')   #pyvenn이 파이썬 path에 들어가 있지 않아서 추가함

import venn
%matplotlib inline

labels = venn.get_labels([{1,2,3,4}, {2,3,5,6}, {1,6,3,9}, {7,4,9,11}], fill=['number']
fig, ax = venn.venn4(labels, names=['A', 'B', 'C', 'D'])
fig.show()

같은 방법으로 그룹이 5, 6개인 것도 그릴 수 있다.

labels = venn.get_labels([{1,2,3,4}, {2,3,5,6}, {1,6,3,9}, {7,4,9,11}, {11, 1, 12}], fill=['number'])
fig, ax = venn.venn5(labels, names=['A', 'B', 'C', 'D', 'E'])
fig.show()

labels = venn.get_labels([{1,2,3,4}, {2,3,5,6}, {1,6,3,9}, {7,4,9,11}, {11, 1, 12}, {100,50, 1,2,5,6}], fill=['number'])
fig, ax = venn.venn6(labels, names=['A', 'B', 'C', 'D', 'E', 'F'])
fig.show()