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

Matplotlib를 활용해 Python에서 초록→빨강 히트맵 만드는 방법

Python에서 초록(Green)에서 빨강(Red)으로 이어지는 색상의 히트맵을 만들고 싶다면, Matplotlib의 커스텀 컬러맵 기능을 활용하면 됩니다. 아래에서 단계별로 자세히 살펴보겠습니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 주변과 사이의 여백을 조정합니다.
  • 빨강, 초록, 파랑 채널별 색상 전환 지점을 담은 딕셔너리(cdict)를 정의합니다.
  • LinearSegmentedColormap을 사용해 선형 구간 매핑 방식의 사용자 정의 컬러맵을 생성합니다.
  • figure와 서브플롯(ax)을 함께 생성합니다.
  • 5×5 크기의 난수 데이터를 만듭니다.
  • pcolormesh()로 비정형 사각 격자 위에 유사컬러(pseudocolor) 플롯을 그립니다.
  • ScalarMappable 인스턴스에 대한 컬러바(colorbar)를 추가합니다.
  • show() 메서드로 최종 그림을 화면에 표시합니다.

예제 코드

import matplotlib.pyplot as plt
import matplotlib.colors as colors
import numpy as np

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

cdict = {'red': ((0.0, 0.0, 0.0),
                 (0.5, 1.0, 1.0),
                 (1.0, 1.0, 0.7)),

         'green': ((0.0, 0.7, 0.7),
                   (0.5, 1.0, 1.0),
                   (1.0, 0.0, 0.0)),

          'blue': ((0.0, 0.0, 0.0),
                   (0.5, 1.0, 1.0),
                   (1.0, 0.0, 0.0))
        }
GnRd = colors.LinearSegmentedColormap('GnRd', cdict)

fig, ax = plt.subplots(1)

data = np.random.rand(5, 5)*6.-3.

p = ax.pcolormesh(data, cmap=GnRd, vmin=-5, vmax=5)

fig.colorbar(p, ax=ax)

plt.show()

코드 설명

핵심은 cdict 딕셔너리입니다. 각 RGB 채널마다 (위치, 시작값, 끝값) 형태의 튜플 목록을 정의하여, 값이 최소(vmin)에서 최대(vmax)로 이동할 때 색이 어떻게 보간되는지 제어합니다. 이 예제에서는 값이 낮을 때 초록색 계열로, 높아질수록 빨간색 계열로 자연스럽게 전환되도록 설정했습니다.

이렇게 만든 컬러맵 GnRdpcolormesh()cmap 인자로 전달하면, 데이터 값에 따라 초록~빨강 범위의 히트맵이 완성됩니다. 마지막으로 colorbar()를 추가하면 각 색상이 나타내는 수치 범위를 한눈에 확인할 수 있습니다.

실행 결과

Matplotlib를 활용해 Python에서 초록→빨강 히트맵 만드는 방법