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

파이썬 Matplotlib로 3차원 산점도(Scatter Plot) 그리는 방법

Matplotlib는 데이터 시각화를 위해 널리 사용되는 대표적인 파이썬 패키지입니다. 데이터 시각화는 숫자를 일일이 살펴보거나 복잡한 계산을 수행하지 않고도 데이터 안에서 어떤 일이 일어나고 있는지 직관적으로 파악할 수 있게 해주는 핵심 과정입니다. 또한 정량적인 인사이트를 청중에게 효과적으로 전달하는 데에도 큰 도움이 됩니다.

Matplotlib는 데이터를 바탕으로 2차원 플롯을 생성하는 데 주로 사용되며, 객체 지향 API를 제공하기 때문에 파이썬 애플리케이션 안에 플롯을 손쉽게 삽입할 수 있습니다. IPython 셸, Jupyter 노트북, Spyder IDE 등 다양한 개발 환경에서도 활용 가능합니다.

Matplotlib는 순수 파이썬으로 작성되었으며, 파이썬의 대표적인 수치 계산 패키지인 NumPy를 기반으로 만들어졌습니다.

Matplotlib 설치 방법

Windows 환경에서는 아래 명령어 하나로 간단히 설치할 수 있습니다.

pip install matplotlib

Matplotlib가 정상적으로 동작하려면 다음과 같은 의존성 패키지들이 필요합니다.

Python (3.4 버전 이상)
NumPy
Setuptools
Pyparsing
Libpng
Pytz
FreeType
Six
Cycler
Dateutil

3차원 산점도란?

3차원 플롯은 데이터 포인트의 x축, y축, z축 값을 한눈에 확인하기 위해 사용됩니다. 특히 머신러닝에서는 경사 하강법(gradient descent)이 어떻게 작동하는지 시각적으로 이해하거나, 알고리즘의 계수 최적값을 찾는 과정에서 유용하게 활용됩니다.

그럼 Matplotlib를 사용해 실제로 3차원 산점도를 만드는 방법을 살펴보겠습니다.

예제 코드

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = plt.axes(projection='3d')

z = np.linspace(0, 1, 100)
x = z * np.sin(20 * z)
y = z * np.cos(20 * z)

ax.scatter(x, y, z, 'blue')
ax.set_ylabel("Y-axis")
ax.set_xlabel("X-axis")
ax.set_zlabel("Z-axis")
ax.set_title('A sample 3D scatter plot')

plt.show()

실행 결과

파이썬 Matplotlib로 3차원 산점도(Scatter Plot) 그리는 방법

코드 상세 설명

  • 필요한 패키지들을 임포트하고, 코드 작성 편의를 위해 별칭(alias)을 정의합니다.

  • 'figure' 함수를 사용해 빈 figure(그림 영역)를 생성합니다.

  • 'axes' 함수로 그래프를 그릴 축을 만들며, projection='3d' 옵션을 지정해 3차원 축임을 선언합니다.

  • NumPy 라이브러리의 'linspace' 함수로 z값을 생성하고, sin·cos 연산을 통해 나선형 구조의 x, y 좌표 데이터를 만듭니다.

  • 'scatter' 함수를 사용해 생성된 데이터를 3차원 산점도 형태로 시각화하며, 점의 색상은 'blue'(파란색)로 지정합니다.

  • set_xlabel, set_ylabel, set_zlabel 함수로 각각 X축, Y축, Z축의 라벨을 설정하고, set_title 함수로 그래프 제목을 추가합니다.

  • 마지막으로 'show' 함수를 호출해 완성된 그래프를 화면에 출력합니다.

이처럼 Matplotlib와 mpl_toolkits의 mplot3d 모듈만 있다면 몇 줄의 코드로도 직관적인 3차원 산점도를 손쉽게 구현할 수 있습니다.