Matplotlib의 streamplot(스트림 플롯)은 벡터장의 흐름을 시각화하는 데 유용한 도구입니다. 이 글에서는 스트림 플롯의 컬러맵과 선 두께(선폭) 품질을 한 단계 끌어올리는 방법을 단계별로 살펴보겠습니다.
구현 단계
그림 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
하나의 그림(fig)과 서브플롯(ax) 세트를 생성합니다.
x, y 데이터 포인트를 만든 뒤 np.meshgrid()를 사용해 좌표 벡터로부터 좌표 행렬을 반환받습니다.
x, y 데이터를 기반으로 벡터장 성분 X, Y를 계산합니다.
x, y, X, Y 데이터로 streamplot을 생성합니다. 이때 메서드의 linewidth 매개변수를 사용하면 선 두께를 자유롭게 조절할 수 있습니다. 예제에서는 linewidth=5로 설정했습니다.
ScalarMappable 인스턴스인 stream.lines에 대한 컬러바(colorbar)를 추가합니다.
plt.show() 메서드를 호출해 그림을 화면에 표시합니다.
예제 코드
import numpy as np from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True fig, ax = plt.subplots() x, y = np.meshgrid(np.linspace(-5, 5, 20), np.linspace(-5, 5, 20)) X = y Y = 3 * x - 4 * y stream = ax.streamplot(x, y, X, Y, density=1, linewidth=5, cmap='plasma', color=Y) fig.colorbar(stream.lines, ax=ax) plt.show()
실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

핵심 포인트 정리
linewidth=5처럼 값을 키우면 흐름선이 더 굵고 선명하게 표현되며, cmap='plasma'와 color=Y 옵션을 함께 사용하면 벡터장의 크기(Y 값)에 따라 색상이 그라데이션으로 매핑됩니다. 마지막으로 fig.colorbar(stream.lines)로 컬러바를 추가하면 색상이 의미하는 물리량을 직관적으로 파악할 수 있어 시각화 완성도가 크게 향상됩니다.