Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 Matplotlib로 누적 막대 차트(Stacked Bar Chart) 만드는 방법

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()

실행 결과

파이썬 Matplotlib로 누적 막대 차트(Stacked Bar Chart) 만드는 방법

코드 상세 설명

  • 먼저 필요한 패키지를 임포트하고, 코드 작성의 편의를 위해 별칭(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으로 넘겨주면 됩니다. 이 방법을 응용하면 다양한 형태의 데이터 비교 차트를 손쉽게 구현할 수 있습니다.