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