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

Matplotlib 3D 산점도(Scatter Plot)에서 투명도 끄는 방법

Matplotlib의 3D 산점도(scatter plot)에서 마커의 투명도 효과를 제거하려면 depthshade 매개변수를 활용하면 됩니다. 기본적으로 Matplotlib는 입체적인 깊이감을 표현하기 위해 카메라에서 멀리 있는 점들을 흐리게 처리하는데, depthshade=False로 설정하면 이러한 깊이 음영 효과가 비활성화되어 모든 데이터 포인트가 동일한 선명도로 표시됩니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 사이 및 주변의 여백을 조정합니다.
  • 새 그림을 생성하거나 기존 그림을 활성화합니다.
  • 서브플롯 배치의 일부로 3D 축(ax)을 그림에 추가합니다.
  • numpy를 사용하여 무작위 데이터 포인트 x, y, z를 생성합니다.
  • scatter() 메서드에 depthshade=False를 지정하여 3D 축 위에 데이터를 플롯합니다.
  • show() 메서드를 호출해 그림을 화면에 표시합니다.

예제 코드

import numpy as np
from matplotlib import 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')

N = 10
x = np.random.rand(N)
y = np.random.rand(N)
z = np.random.rand(N)

ax.scatter(x, y, z, c=y, cmap='plasma', alpha=1, depthshade=False)

plt.show()

코드 설명

위 예제에서 alpha=1은 마커 자체를 완전히 불투명하게 만들고, depthshade=False는 거리에 따른 자동 음영 처리를 꺼줍니다. 두 옵션을 함께 사용하면 3D 공간상의 위치와 관계없이 모든 점이 원래 색상 그대로 선명하게 렌더링됩니다. 색상은 c=y로 y값에 따라 지정되었으며, plasma 컬러맵이 적용되었습니다.

실행 결과

Matplotlib 3D 산점도(Scatter Plot)에서 투명도 끄는 방법Matplotlib 3D 산점도(Scatter Plot)에서 투명도 끄는 방법