Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib streamplot에서 컬러맵·선 두께 품질을 높이는 방법

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()

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

Matplotlib streamplot에서 컬러맵·선 두께 품질을 높이는 방법

핵심 포인트 정리

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