Matplotlib를 사용하면 극좌표(polar coordinates)에서도 벡터장을 시각화하는 퀴버 플롯(quiver plot)을 손쉽게 그릴 수 있습니다. 이 글에서는 단계별 예제 코드와 함께 구현 방법을 소개합니다.
구현 절차
그림(figure) 크기를 설정하고, 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
NumPy를 사용하여 반지름(radii), 각도(thetas) 데이터를 생성한 뒤, meshgrid로 theta와 r 좌표 배열을 만듭니다.
새로운 figure를 생성하거나 기존 figure를 활성화합니다.
서브플롯 배치의 일부로 극좌표 축(polar=True)인 ax를 figure에 추가합니다.
quiver() 메서드를 호출하여 화살표(벡터) 컬렉션을 그립니다.
show() 메서드를 사용해 최종 그림을 화면에 표시합니다.
예제 코드
import numpy as np from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True radii = np.linspace(0, 1, 5) thetas = np.linspace(0, 2 * np.pi, 20) theta, r = np.meshgrid(thetas, radii) f = plt.figure() ax = f.add_subplot(polar=True) ax.quiver(theta, r, np.cos(theta) - np.sin(theta), np.sin(theta) + np.cos(theta)) plt.show()
실행 결과
위 코드를 실행하면 원형 격자 위에 각 지점의 벡터 방향과 크기를 나타내는 화살표들이 그려진 극좌표 퀴버 플롯이 출력됩니다. 각도 성분으로는 cos(θ) − sin(θ), 반지름 성분으로는 sin(θ) + cos(θ)이 사용되어, 위치에 따라 회전하는 벡터장 패턴을 확인할 수 있습니다.

핵심 포인트 정리
f.add_subplot(polar=True): 일반 직교 좌표 대신 극좌표 축을 생성하는 핵심 옵션입니다.
np.meshgrid(thetas, radii): 각도와 반지름 조합을 2D 격자로 변환하여 모든 격자점에 벡터를 배치할 수 있게 해줍니다.
quiver(x, y, u, v): x, y는 벡터의 시작 위치, u, v는 각각 벡터의 성분을 의미합니다.