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

Python Matplotlib로 색조 컬러맵과 범례를 적용한 3D 산점도 그리기

Python에서 색조(hue) 컬러맵과 범례를 함께 사용해 3D 산점도를 그리려면 아래 단계를 따르면 됩니다.

  • 그림 크기를 설정하고 서브플롯 주변 및 사이의 여백을 조정합니다.
  • NumPy를 사용해 x, y, z 데이터 포인트를 생성합니다.
  • figure() 메서드로 새 그림을 생성하거나 기존 그림을 활성화합니다.
  • 필요한 경우 현재 축(axes)을 가져옵니다.
  • 팔레트를 정의해 색조 컬러맵을 준비합니다.
  • scatter() 메서드로 x, y, z 데이터 포인트를 플롯합니다.
  • 플롯에 범례를 배치합니다.
  • show() 메서드로 그림을 화면에 표시합니다.

핵심 개념 정리

이 예제에서는 seaborn의 husl 팔레트로 256가지 색상을 생성한 뒤, 이를 ListedColormap으로 변환하여 산점도의 색상 맵으로 사용합니다. 데이터 포인트의 색은 c=x 옵션을 통해 x값에 따라 결정되며, legend_elements() 메서드를 활용하면 컬러맵에 대응하는 범례를 손쉽게 만들 수 있습니다.

예제 코드

import numpy as np
import seaborn as sns
from matplotlib import pyplot as plt
from matplotlib.colors import ListedColormap

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

x = np.random.rand(100)
y = np.random.rand(100)
z = np.random.rand(100)

fig = plt.figure()
ax = fig.add_subplot(projection='3d')
cmap = ListedColormap(sns.color_palette("husl", 256).as_hex())
sc = ax.scatter(x, y, z, s=40, c=x, marker='o', cmap=cmap, alpha=1)
plt.legend(*sc.legend_elements(), bbox_to_anchor=(1.05, 1), loc=2)

plt.show()

참고: 최신 버전의 Matplotlib에서는 fig.gca(projection='3d') 방식이 권장되지 않으므로, 위 코드처럼 fig.add_subplot(projection='3d')를 사용하는 것이 좋습니다.

실행 결과

Python Matplotlib로 색조 컬러맵과 범례를 적용한 3D 산점도 그리기

위 코드를 실행하면 x값에 따라 husl 팔레트의 색상이 입혀진 3D 산점도가 그려지고, 그림 오른쪽에 각 색상 구간을 나타내는 범례가 함께 표시됩니다. alpha 값을 조절하면 점의 투명도를, s 값으로 점의 크기를 자유롭게 변경할 수 있습니다.