Matplotlib의 quiver() 메서드를 활용하면 좌표축 위에 벡터 필드(vector field)를 손쉽게 시각화할 수 있습니다. 벡터 필드는 각 지점에서 화살표의 방향과 크기로 흐름을 표현하며, 물리학·공학 분야의 유체 흐름이나 전자기장 분석 등에 널리 활용됩니다.
구현 단계
그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백을 조정합니다.
NumPy를 이용해 X, Y, T, R, U, V 데이터 포인트를 생성합니다.
현재 figure에 axes를 추가하고 이를 현재 축으로 지정합니다.
quiver() 메서드를 호출하여 3차원 화살표 필드를 플롯합니다.
show() 메서드로 최종 결과물을 화면에 표시합니다.
예제 코드
import numpy as np import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True n = 8 X, Y = np.mgrid[0:n, 0:n] T = np.arctan2(Y - n / 2., X - n/2.) R = 10 + np.sqrt((Y - n / 2.0) ** 2 + (X - n / 2.0) ** 2) U, V = R * np.cos(T), R * np.sin(T) plt.axes([0.025, 0.025, 0.95, 0.95]) plt.quiver(X, Y, U, V, R, cmap="copper") plt.show()
코드 설명
np.mgrid는 8×8 격자 좌표를 생성하고, np.arctan2를 통해 중심점을 기준으로 한 각도(T)를 계산합니다. 반지름(R)은 중심으로부터의 거리에 따라 결정되며, 이를 삼각함수에 대입해 각 지점의 벡터 성분 U(x방향)와 V(y방향)를 구합니다.
quiver() 함수의 다섯 번째 인자인 R은 색상 매핑에 사용되어, 벡터의 크기에 따라 'copper' 컬러맵으로 색이 달라지게 됩니다. 이렇게 하면 벡터의 방향뿐만 아니라 세기까지 직관적으로 파악할 수 있습니다.
실행 결과
위 코드를 실행하면 중심을 향해 나선형으로 뻗어 나가는 방사형 벡터 필드가 그려집니다. 중심에서 멀어질수록 화살표의 길이와 색상 농도가 함께 증가하여, 벡터 크기의 변화를 한눈에 확인할 수 있습니다.