Matplotlib에서 표면 플롯을 만드는 방법
Suraj Joshi
2020년6월25일
Matplotlib
Matplotlib 3D plots
Matplotlib에서는 3D 분석 및 시각화를 위해 mplot3d툴킷을 사용합니다. 여기에는 Matplotlib의 2 차원 함수 위에 구축 된 3 차원 플로팅 방법이 포함되어 있습니다. Matplotlib의 축 생성 함수 중 하나에projection='3d' 인수를 전달하여 3 차원 축을 만들 수 있습니다. 3 차원 축이 초기화되면plot_surface()메소드를 사용하여 표면 플롯을 생성 할 수 있습니다.
Axes3D.plot_surface()메소드
Axes3D.plot_surface(X, Y, Z, *args, **kwargs) 방법을 사용하여 표면 플롯을 만들 수 있습니다 여기서 X, Y 및 Z는 모두 2 차원 배열입니다.
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d
fig = plt.figure(figsize=(8, 6))
ax3d = plt.axes(projection="3d")
xdata = np.linspace(-3, 3, 100)
ydata = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(xdata, ydata)
Z = 1 / (1 + np.exp(-X - Y))
ax3d = plt.axes(projection="3d")
ax3d.plot_surface(X, Y, Z, cmap="plasma")
ax3d.set_title("Surface Plot in Matplotlib")
ax3d.set_xlabel("X")
ax3d.set_ylabel("Y")
ax3d.set_zlabel("Z")
plt.show()

Matplotlib을 사용하여 3D 공간에서 표면 플롯을 생성합니다. 여기서 cmap매개 변수는 3D 색상 공간에서 데이터를 잘 표현하는 데 사용됩니다. 플롯의 색상은 종속 변수 값의 변화에 따라 달라집니다.
다음과 같은 매개 변수를 변경하는 플롯을 사용자 정의 할 수 있습니다.
rstride: 기본값이 10 인 행 단계 크기cstride: 기본값이 10 인 열 단계 크기color: 표면의 색상cmap: 표면의 컬러 맵facecolors: 표면의 각 패치에 대한 페이스 컬러norm: 값을 색상에 매핑하는 Normalize 인스턴스vmin: 매핑 할 최소값vmax: 매핑 할 최대 값shade: 얼굴 색상을 음영할지 여부
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d
fig = plt.figure(figsize=(8, 6))
ax3d = plt.axes(projection="3d")
xdata = np.linspace(-3, 3, 100)
ydata = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(xdata, ydata)
Z = 1 / (1 + np.exp(-X - Y))
ax3d = plt.axes(projection="3d")
surf = ax3d.plot_surface(X, Y, Z, rstride=7, cstride=7, cmap="viridis")
fig.colorbar(surf, ax=ax3d)
ax3d.set_title("Surface Plot in Matplotlib")
ax3d.set_xlabel("X")
ax3d.set_ylabel("Y")
ax3d.set_zlabel("Z")
plt.savefig("Customized Surface Plot.png")
plt.show()

이 예제에서는colorbar()메서드를 사용하고 표면 플롯 객체를 메서드에 전달하여 그림을보다 유익하게 만들어 그림에 컬러 막대를 추가합니다.
튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
작가: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn