Matplotlib를 활용하면 3D 투영 공간에 점의 크기가 서로 다른 산점도(scatter plot)를 손쉽게 그릴 수 있습니다. 이 글에서는 각 데이터 포인트마다 마커 크기를 다르게 지정하여 3차원 산점도를 시각화하는 방법을 단계별로 살펴보겠습니다.
구현 단계
- 그림(figure) 크기를 설정하고, 서브플롯 주변과 사이의 여백(padding)을 조정합니다.
- NumPy를 사용해 xs, ys, zs 세 가지 데이터 포인트를 생성합니다.
- 마커 크기를 다양하게 만들어 줄 변수 s를 초기화합니다.
- figure() 메서드로 새 그림을 생성하거나 기존 그림을 활성화합니다.
- 서브플롯 형태로 현재 그림에 축(axes)을 추가하고,
projection='3d'옵션으로 3D 투영을 설정합니다. - scatter() 메서드를 사용해 xs, ys, zs 데이터 포인트를 플로팅합니다.
- show() 메서드로 그림을 화면에 출력합니다.
예제 코드
import numpy as np from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True xs = np.random.randint(low=8, high=30, size=35) ys = np.random.randint(130, 195, 35) zs = np.random.randint(30, 160, 35) s = zs / ((ys * 0.01) ** 2) fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(ys, zs, xs, s=s * 5, c=xs, cmap='copper') plt.show()
실행 결과
위 코드를 실행하면 각 점의 크기가 계산된 값(s)에 따라 달라지는 3D 산점도가 출력됩니다. 여기서 마커 크기 s는 ys와 zs 값을 기반으로 계산되며, 색상은 xs 값에 따라 'copper' 컬러맵으로 매핑됩니다.
이처럼 scatter() 메서드의 s 파라미터에 배열을 전달하면 점마다 크기를 개별적으로 제어할 수 있고, c와 cmap 파라미터를 함께 사용하면 크기뿐 아니라 색상까지 데이터에 따라 표현할 수 있습니다. 이를 통해 3차원 데이터의 네 번째 정보까지 한눈에 시각화할 수 있습니다.