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

Matplotlib에서 2D NumPy 배열로 산점도(Scatter Plot) 그리기

데이터 시각화에서 산점도(scatter plot)는 두 변수 간의 관계를 직관적으로 파악할 수 있는 가장 기본적인 도구 중 하나입니다. 이 글에서는 matplotlib를 사용하여 2차원 NumPy 배열을 산점도로 표현하는 방법을 단계별로 알아보겠습니다.

구현 단계

  • 그림 크기(figure size)를 설정하고, 서브플롯(subplot) 주변과 사이의 여백을 자동으로 조정합니다.
  • NumPy를 사용하여 100×3 크기의 무작위(random) 데이터 배열을 생성합니다.
  • scatter() 메서드를 사용해 2D NumPy 배열을 산점도로 플롯합니다. 세 번째 열의 값은 색상(color)으로 활용됩니다.
  • show() 메서드를 호출하여 최종 그래프를 화면에 출력합니다.

예제 코드

import numpy as np
from matplotlib import pyplot as plt

# 그림 크기 설정
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# 100×3 크기의 무작위 데이터 생성
data = np.array(np.random.random((100, 3)))

# 산점도 그리기 (세 번째 열 값을 색상으로 매핑)
plt.scatter(data[:, 0], data[:, 1], c=data[:, 2], cmap='hot')

# 컬러바 추가 (선택 사항)
plt.colorbar(label='data[:, 2] 값')

# 그래프 출력
plt.show()

코드 설명

위 코드에서 핵심 부분은 plt.scatter() 호출입니다. 각 인자의 역할은 다음과 같습니다.

  • x축 데이터: data[:, 0] — 배열의 첫 번째 열을 x 좌표로 사용합니다.
  • y축 데이터: data[:, 1] — 두 번째 열을 y 좌표로 사용합니다.
  • 색상(c): data[:, 2] — 세 번째 열의 값에 따라 각 점의 색이 결정됩니다.
  • cmap='hot': 'hot' 컬러맵을 적용하여 값이 클수록 밝은 색(노란색~흰색), 작을수록 어두운 색(검정~빨강)으로 표현됩니다.

실행 결과

위 코드를 실행하면 무작위로 분포된 100개의 점이 표시된 산점도가 생성되며, 각 점의 색상은 세 번째 열의 값에 따라 'hot' 컬러맵으로 그라데이션되어 나타납니다.

Matplotlib에서 2D NumPy 배열로 산점도(Scatter Plot) 그리기

마무리

이처럼 matplotlib의 scatter() 메서드와 NumPy 배열 슬라이싱을 조합하면, 다차원 데이터를 색상 정보까지 포함하여 손쉽게 시각화할 수 있습니다. cmap 옵션을 'viridis', 'coolwarm' 등 다른 컬러맵으로 변경하면 다양한 스타일의 산점도를 만들어 볼 수 있습니다.