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

파이썬 Matplotlib로 3D 히스토그램(3D 막대 그래프) 그리는 방법

데이터를 입체적으로 시각화하고 싶다면 Matplotlibbar3d() 메서드를 활용해 3D 히스토그램을 손쉽게 그릴 수 있습니다. 이 글에서는 파이썬에서 3D 막대 그래프를 렌더링하는 전체 과정을 단계별로 살펴보겠습니다.

3D 히스토그램 렌더링 단계

  1. 그림 크기 설정: rcParams를 사용해 figure 크기를 지정하고, 서브플롯 사이와 주변의 여백(padding)을 자동으로 조정합니다.

  2. 피겨 생성: figure() 메서드로 새로운 피겨를 만들거나 기존 피겨를 활성화합니다.

  3. 3D 축 추가: add_subplot() 메서드에 projection='3d' 옵션을 지정하여 현재 피겨에 3D 축을 서브플롯 형태로 추가합니다.

  4. 데이터 포인트 생성: NumPy를 활용해 x, y, z 좌표 데이터(x3, y3, z3)를 준비합니다.

  5. 막대 크기 정의: 각 막대의 너비와 높이에 해당하는 dx, dy, dz 데이터를 생성합니다.

  6. 3D 막대 그리기: bar3d() 메서드를 호출하여 3D 막대(bar)를 플롯합니다.

  7. 축 숨기기(선택 사항): axis('off')를 호출하면 축과 눈금을 제거해 더 깔끔한 시각화가 가능합니다.

  8. 결과 출력: show() 메서드로 완성된 그래프를 화면에 표시합니다.

전체 예제 코드

import numpy as np
from matplotlib import pyplot as plt

# 그림 크기 및 자동 레이아웃 설정
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

fig = plt.figure()

# 3D 투영(projection) 축 추가
ax1 = fig.add_subplot(111, projection='3d')

# 데이터 포인트 생성
x3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y3 = [5, 6, 7, 8, 2, 5, 6, 3, 7, 2]
z3 = np.zeros(10)

# 막대의 너비(dx, dy)와 높이(dz) 정의
dx = np.ones(10)
dy = np.ones(10)
dz = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 3D 막대 그래프 플롯
ax1.bar3d(y3, x3, z3, dx, dy, dz, color="red")
ax1.axis('off')
plt.show()

실행 결과

위 코드를 실행하면 빨간색 3D 막대들이 격자 위에 배치된 히스토그램이 출력됩니다. 각 막대의 위치는 (y3, x3) 좌표로 결정되고, 높이는 dz 값에 따라 달라집니다.

파이썬 Matplotlib로 3D 히스토그램(3D 막대 그래프) 그리는 방법

추가 팁

  • 색상 변경: color 인자에 다른 색상을 지정하거나, 막대마다 다른 색상 리스트를 전달할 수도 있습니다.

  • 투명도 조절: alpha 매개변수를 사용하면 막대의 투명도를 조정해 겹치는 영역을 쉽게 확인할 수 있습니다.

  • 시점 회전: ax1.view_init(elev=30, azim=45)처럼 카메라 각도를 조정하면 원하는 방향에서 그래프를 관찰할 수 있습니다.

  • 축 유지: 실제 데이터 분석 시에는 axis('off')를 생략하고 축 레이블(set_xlabel, set_ylabel, set_zlabel)을 추가하는 것이 좋습니다.

이처럼 Matplotlib의 bar3d() 메서드만 있으면 별도의 3D 전용 라이브러리 없이도 간단한 코드 몇 줄로 직관적인 3D 히스토그램을 만들 수 있습니다.