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

Matplotlib에서 다양한 마커 크기로 3D 산점도 그리는 방법

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 파라미터에 배열을 전달하면 점마다 크기를 개별적으로 제어할 수 있고, ccmap 파라미터를 함께 사용하면 크기뿐 아니라 색상까지 데이터에 따라 표현할 수 있습니다. 이를 통해 3차원 데이터의 네 번째 정보까지 한눈에 시각화할 수 있습니다.