Matplotlib에서 3D 매개변수 곡선을 시각화할 때, 각 데이터 포인트의 값에 따라 색상을 다르게 표현하면 곡선의 변화를 한눈에 파악할 수 있습니다. 이 글에서는 scatter() 메서드와 컬러맵(cmap)을 활용해 3D 매개변수 곡선에 색상을 입히는 방법을 단계별로 살펴보겠습니다.
구현 단계
- 그림 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
- figure() 메서드를 사용해 새 그림을 생성하거나 기존 그림을 활성화합니다.
- 서브플롯 배치 형태로 3D 축(axis)을 추가합니다.
- 매개변수 곡선을 만들기 위해 theta, z, r, x, y 변수를 초기화합니다.
- scatter() 메서드로 x, y, z 데이터 포인트를 플롯하고, c 인자와 cmap 옵션으로 색상을 지정합니다.
- 플롯의 제목을 설정합니다.
- show() 메서드를 호출해 그림을 화면에 표시합니다.
예제 코드
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z ** 2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)
ax.scatter(x, y, z, c=x, cmap="copper")
ax.set_title("Parametric Curve")
plt.show()코드 설명
위 예제는 나선형(spiral) 구조의 3D 매개변수 곡선을 생성합니다. theta는 -4π부터 4π까지 100개의 균등한 값을 가지며, z 역시 -2에서 2 사이의 값으로 정의됩니다. 반지름 r은 z² + 1로 계산되고, 이를 삼각함수 sin과 cos에 곱해 x, y 좌표를 얻습니다.
핵심은 scatter() 호출 부분입니다. c=x 옵션을 통해 x 좌표값에 비례해 각 점의 색상이 결정되며, cmap="copper" 컬러맵이 적용되어 값이 클수록 밝은 동색 계열로 표현됩니다. 이처럼 특정 변수를 기준으로 색상을 매핑하면 곡선을 따라 데이터가 어떻게 변하는지 직관적으로 확인할 수 있습니다.
실행 결과
코드를 실행하면 copper 컬러맵이 적용된 3D 나선형 매개변수 곡선이 출력되며, x 값의 크기에 따라 점들의 색상이 은은하게 변하는 것을 확인할 수 있습니다.