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

Matplotlib 등고선 플롯의 컬러바 색상 범위(vmin·vmax) 설정 방법

Matplotlib에서 등고선(contour) 플롯의 컬러바(colorbar)에 표시되는 값의 범위를 제한하려면 vminvmax를 직접 지정한 뒤, 이를 기반으로 컬러바를 생성하면 됩니다. 아래에서 구현 단계와 예제 코드를 통해 자세히 살펴보겠습니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 사이 및 주변의 여백(padding)을 조정합니다.
  • NumPy를 사용해 x, y 데이터 포인트를 생성합니다.
  • xy를 조합하여 플롯에 사용할 데이터를 만듭니다.
  • 좌표 벡터로부터 좌표 행렬(meshgrid)을 얻습니다.
  • 컬러바의 하한과 상한을 결정할 vmin, vmax 값을 초기화합니다.
  • contourf() 메서드로 채워진 등고선 플롯을 그립니다.
  • vmin~vmax 범위 안에서 ScalarMappable을 활용해 컬러바를 생성합니다.
  • show() 메서드로 그림을 화면에 표시합니다.

예제 코드

from matplotlib import pyplot as plt
import numpy as np
from matplotlib.cm import ScalarMappable

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

x = np.arange(20)
y = np.arange(20)

data = x[:, None] + y[None, :]
X, Y = np.meshgrid(x, y)

vmin = 0
vmax = 15

fig, ax = plt.subplots()

qcs = ax.contourf(
    X, Y, data,
    vmin=vmin, vmax=vmax
)

fig.colorbar(
    ScalarMappable(norm=qcs.norm, cmap=qcs.cmap),
    ticks=range(vmin, vmax+5, 5)
)

plt.show()

코드 핵심 설명

이 예제에서 데이터는 x + y 조합으로 만들어지며, 실제 최댓값은 38입니다. 하지만 contourf() 호출 시 vmin=0, vmax=15를 지정했기 때문에 15를 초과하는 영역은 모두 최고 색상으로 잘려서(clipping) 표시됩니다.

컬러바는 등고선 플롯 객체(qcs)의 normcmapScalarMappable에 전달해 생성함으로써, 플롯과 동일한 정규화 규칙과 색상 지도를 공유하게 됩니다. 또한 ticks 인자를 사용해 컬러바 눈금을 0, 5, 10, 15처럼 5단위 간격으로 배치했습니다.

실행 결과

Matplotlib 등고선 플롯의 컬러바 색상 범위(vmin·vmax) 설정 방법