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

파이썬 Matplotlib로 3D 산점도의 알파 값(투명도) 제어하기

파이썬의 Matplotlib 라이브러리를 활용하면 3D 산점도(scatter plot)에서 알파 값, 즉 점의 투명도를 자유롭게 조절할 수 있습니다. 핵심은 산점도 객체의 facecolors(면 색상)와 edgecolors(테두리 색상)를 직접 설정하는 것입니다.

3D 산점도 알파 값 설정 단계

  • 그림 크기를 지정하고 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
  • figure() 메서드를 사용해 새 그림을 생성하거나 기존 그림을 활성화합니다.
  • add_subplot() 메서드로 그림에 '~.axes.Axes'를 추가하고, projection 옵션을 '3d'로 지정해 3D 축을 만듭니다.
  • NumPy를 이용해 x, y, z 데이터 포인트를 생성합니다.
  • scatter() 메서드로 x, y, z 좌표의 점들을 플롯합니다.
  • facecolorsedgecolors를 설정해 점의 면 색상과 테두리 색상을 지정합니다.
  • show() 메서드를 호출해 최종 그림을 화면에 출력합니다.

예제 코드

import numpy as np
import matplotlib.pyplot as plt

# 그림 크기 및 자동 레이아웃 설정
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# 새 figure 생성 후 3D 축 추가
fig = plt.figure()
ax = fig.add_subplot(projection='3d')

# NumPy로 x, y, z 데이터 생성
x = np.random.sample(20)
y = np.random.sample(20)
z = np.random.sample(20)

# 산점도 플롯 및 facecolors / edgecolors 설정
s = ax.scatter(x, y, z, c="r")
s._set_facecolors, s._set_edgecolors = s.set_facecolors, s.set_edgecolors

plt.show()

실행 결과

파이썬 Matplotlib로 3D 산점도의 알파 값(투명도) 제어하기

위 코드를 실행하면 빨간색 점으로 표현된 3차원 산점도가 출력됩니다. 내부적으로 _set_facecolors_set_edgecolors 속성에 setter 메서드를 연결함으로써, 점의 면과 테두리 색상을 유연하게 제어할 수 있게 됩니다.

참고: alpha 매개변수로 더 간단하게 투명도 조절하기

실무에서는 scatter() 메서드의 alpha 매개변수를 직접 사용하는 방법이 더 간편합니다. alpha 값은 0(완전히 투명)부터 1(완전히 불투명) 사이의 실수로 지정할 수 있습니다.

s = ax.scatter(x, y, z, c="r", alpha=0.5)

이처럼 alpha=0.5를 적용하면 점들이 반투명하게 렌더링되어, 데이터 포인트가 많을 때 겹치는 영역을 시각적으로 파악하기 쉬워집니다. 두 방법을 상황에 맞게 활용하면 3D 시각화의 가독성을 크게 향상시킬 수 있습니다.