Matplotlib에서 수학 방정식을 이용해 평면(plane)을 시각화하려면 NumPy로 격자(grid) 데이터를 생성한 뒤, 3D 축 위에 표면(surface) 플롯을 그리면 됩니다. 아래에서 단계별로 자세히 살펴보겠습니다.
구현 단계
- 그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
- NumPy를 사용해 x, y 데이터 포인트를 생성합니다.
- x와 y 값을 바탕으로 평면의 방정식(eq)을 계산합니다.
- 새 figure를 생성하거나 기존 figure를 활성화합니다.
- projection='3d' 옵션을 지정하여 3차원 축(ax)을 가져옵니다.
- x, y, eq 데이터 포인트로 표면 플롯(plot_surface)을 생성합니다.
- show() 메서드를 호출하여 그림을 화면에 표시합니다.
예제 코드
import numpy as np import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True x = np.linspace(-10, 10, 100) y = np.linspace(-10, 10, 100) x, y = np.meshgrid(x, y) eq = 0.12 * x + 0.01 * y + 1.09 fig = plt.figure() ax = fig.add_subplot(projection='3d') ax.plot_surface(x, y, eq) plt.show()
참고: 구버전 코드에서 흔히 사용되던 fig.gca(projection='3d')는 최신 Matplotlib 버전에서 deprecated(사용 중단 권고) 상태입니다. 따라서 위 예제처럼 fig.add_subplot(projection='3d') 또는 plt.axes(projection='3d')를 사용하는 것이 좋습니다.
코드 설명
np.linspace(-10, 10, 100): -10부터 10까지 범위를 100개의 균일한 간격으로 나눈 배열을 생성합니다.np.meshgrid(x, y): 1차원 배열을 2차원 좌표 격자로 변환하여 평면 전체의 (x, y) 좌표 쌍을 만듭니다.eq = 0.12 * x + 0.01 * y + 1.09: 평면의 방정식 z = 0.12x + 0.01y + 1.09를 벡터 연산으로 한 번에 계산합니다.ax.plot_surface(x, y, eq): 계산된 z값(방정식 결과)을 3차원 표면으로 렌더링합니다.
실행 결과
위 코드를 실행하면 다음과 같이 방정식 z = 0.12x + 0.01y + 1.09로 정의된 3차원 평면이 출력됩니다.
