Matplotlib.pyplot.quiver는 벡터장(vector field)을 화살표로 시각화하는 함수입니다. 각 화살표는 시작점 (x, y)과 방향·크기 성분 (u, v)으로 정의되며, 물리학에서의 힘 분포, 유체 흐름, 전기장 등을 표현할 때 특히 유용합니다. 아래 단계별로 quiver의 작동 방식을 살펴보겠습니다.
quiver 사용 단계
그림(figure) 크기를 설정하고 서브플롯 사이 및 주변의 여백(padding)을 조정합니다.
NumPy 배열을 사용하여 벡터 좌표를 생성합니다.
x, y, u, v 데이터 포인트를 준비합니다.
figure() 메서드로 새 그림을 생성하거나 기존 그림을 활성화합니다.
gca() 메서드로 현재 축(axis) 객체를 가져옵니다.
축의 x, y 표시 범위(limit)를 설정합니다.
draw() 메서드로 현재 그림을 다시 그립니다.
show() 메서드로 그림을 화면에 표시합니다.
예제 코드
import numpy as np import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True soa = np.array([[0, 0, 3, 2], [0, 0, 4, 5], [0, 0, 9, 9]]) X, Y, U, V = zip(*soa) plt.figure() ax = plt.gca() ax.quiver(X, Y, U, V, angles='xy', scale_units='xy', scale=1, color=['red', 'green', 'yellow']) ax.set_xlim([-1, 10]) ax.set_ylim([-1, 10]) plt.draw() plt.show()
코드 설명
배열 soa의 각 행은 [x 시작점, y 시작점, x 방향 성분, y 방향 성분] 순서로 구성되어 있습니다. zip(*soa)을 통해 이를 X, Y, U, V 네 개의 리스트로 언패킹합니다.
angles='xy' 옵션은 화살표가 x축과 y축 데이터 좌표계를 기준으로 그려지도록 하며, scale_units='xy'와 scale=1을 함께 지정하면 화살표 길이가 실제 데이터 값과 정확히 일치하게 됩니다. 즉, 벡터 (3, 2)는 원점에서 시작해 실제 좌표상으로 정확히 그만큼 뻗어 나갑니다.
마지막으로 color 매개변수에 색상 리스트를 전달하여 각각의 화살표를 빨강, 초록, 노랑으로 구분해 표현했습니다. 실행 결과 세 개의 벡터가 원점에서 출발해 각자의 방향과 크기대로 그려진 것을 확인할 수 있습니다.