Matplotlib는 파이썬에서 가장 널리 사용되는 데이터 시각화 라이브러리 중 하나입니다. 데이터 시각화는 숫자를 일일이 확인하거나 복잡한 계산을 수행하지 않고도 데이터 속에서 어떤 현상이 일어나고 있는지 직관적으로 파악할 수 있게 해주는 핵심 과정입니다. 이를 통해 정량적인 인사이트를 청중에게 효과적으로 전달할 수 있습니다.
Matplotlib는 데이터를 기반으로 2차원 플롯을 생성하는 데 사용됩니다. 객체 지향 API를 제공하기 때문에 파이썬 애플리케이션 안에 그래프를 손쉽게 삽입할 수 있으며, IPython 셸, Jupyter Notebook, Spyder IDE 등 다양한 개발 환경에서 활용할 수 있습니다.
또한 Matplotlib는 순수 파이썬으로 작성되었으며, 파이썬의 대표적인 수치 연산 패키지인 NumPy를 기반으로 만들어졌습니다.
Matplotlib 설치하기
윈도우 환경이라면 아래 명령어 한 줄로 간단하게 설치할 수 있습니다.
pip install matplotlib
Matplotlib 설치 및 실행에 필요한 의존성 패키지는 다음과 같습니다.
Python (3.4 버전 이상) NumPy Setuptools Pyparsing Libpng Pytz FreeType Six Cycler Dateutil
누적 막대 차트란?
누적 막대 차트(stacked bar chart)는 두 개 이상의 값을 하나의 직사각형 막대 안에 겹쳐서 표현하는 그래프입니다. 각 값이 막대 위로 차곡차곡 쌓이는 형태로 나타나기 때문에 전체와 부분의 관계를 한눈에 비교하기에 매우 유용합니다.
그럼 실제로 Matplotlib를 사용하여 누적 막대 차트를 만드는 방법을 살펴보겠습니다.
예제 코드
import matplotlib.pyplot as plt
labels = ['A1', 'A2', 'A3', 'A4']
val_1 = [34, 56, 78, 91]
val_2 = [20, 56, 32, 89]
val_3 = [1, 3, 5, 3]
val_4 = [3, 5, 3, 4]
width = 0.40
fig, ax = plt.subplots()
ax.bar(labels, val_1, width, yerr=val_3, label='Label_1')
ax.bar(labels, val_2, width, yerr=val_4, bottom=val_1,
label='Label_2')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_title('Stacked Bar Chart Example')
ax.legend()
plt.show()실행 결과

코드 상세 설명
먼저 필요한 패키지를 임포트하고, 코드 작성의 편의를 위해 별칭(alias)을 지정합니다.
누적 차트에 사용할 카테고리 레이블(labels)과 각 레이블에 해당하는 값(val_1 ~ val_4)을 리스트로 정의합니다.
'subplots' 함수를 사용해 그래프를 그릴 figure와 축(ax) 영역을 생성합니다.
'bar' 함수를 호출하여 첫 번째 데이터를 막대 그래프로 그립니다. 여기서 'yerr' 옵션을 사용하면 오차 막대(error bar)를 함께 표시할 수 있습니다.
두 번째 'bar' 함수 호출 시 'bottom' 옵션에 첫 번째 데이터(val_1)를 지정하는 것이 핵심입니다. 이렇게 하면 두 번째 값이 첫 번째 값 위에 쌓이면서 누적 막대 형태가 완성됩니다.
'set_xlabel', 'set_ylabel', 'set_title' 함수를 사용해 X축, Y축 라벨과 차트 제목을 지정합니다.
'legend' 함수로 범례를 추가하여 각 막대가 어떤 데이터를 의미하는지 알 수 있게 합니다.
마지막으로 'show' 함수를 호출하면 완성된 그래프가 화면에 출력됩니다.
마무리
누적 막대 차트를 만들 때 가장 중요한 포인트는 두 번째 이후의 데이터에 'bottom' 옵션을 지정하는 것입니다. 세 개 이상의 데이터를 누적하려면 이전 값들을 모두 더한 값을 bottom으로 넘겨주면 됩니다. 이 방법을 응용하면 다양한 형태의 데이터 비교 차트를 손쉽게 구현할 수 있습니다.