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

Matplotlib에서 사용 가능한 모든 컬러맵을 한눈에 확인하는 방법

Matplotlib에는 다양한 내장 컬러맵(colormap)이 포함되어 있으며, 이를 모두 한눈에 확인하려면 애니메이션 기능을 활용하는 것이 가장 편리합니다. 아래 단계를 따라 하면 Matplotlib에서 사용 가능한 모든 컬러맵을 순차적으로 살펴볼 수 있습니다.

컬러맵 전체 목록 확인 절차

  • 그림(figure) 크기를 설정하고 서브플롯 사이 및 주변의 여백(padding)을 조정합니다.
  • 새 그림을 생성하거나 기존 그림을 활성화합니다.
  • 서브플롯 배치의 일부로 그림에 Axes 객체를 추가합니다.
  • 기존 축(ax)을 기준으로 분할된 새로운 축(컬러바 전용 영역)을 만듭니다.
  • NumPy를 사용해 무작위 데이터를 생성합니다.
  • imshow() 메서드로 데이터를 2D 래스터 이미지 형태로 표시합니다.
  • ScalarMappable 인스턴스인 im에 대한 컬러바(colorbar)를 생성합니다.
  • 현재 그림에 제목을 설정합니다.
  • Matplotlib에서 사용 가능한 모든 컬러맵을 적용해 이미지를 애니메이션으로 전환합니다.
  • 함수를 반복 호출하는 방식(FuncAnimation)으로 애니메이션을 구성합니다.
  • show() 메서드를 사용해 그림을 화면에 표시합니다.

예제 코드

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from mpl_toolkits.axes_grid1 import make_axes_locatable

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

fig = plt.figure()
ax = fig.add_subplot(111)
div = make_axes_locatable(ax)
cax = div.append_axes('right', '5%', '5%')
data = np.random.rand(5, 5)
im = ax.imshow(data)
cb = fig.colorbar(im, cax=cax)
cmap = plt.colormaps()
tx = ax.set_title('Color map: {0}'.format(cmap[0]))

def animate(i):
   cax.cla()
   data = np.random.rand(5, 5)
   im = ax.imshow(data, cmap=cmap[i])
   fig.colorbar(im, cax=cax)
   tx.set_text('Color map: {0}'.format(cmap[i]))

ani = animation.FuncAnimation(fig, animate, frames=166)

plt.show()

실행 결과

Matplotlib에서 사용 가능한 모든 컬러맵을 한눈에 확인하는 방법

코드를 실행하면 무작위로 생성된 데이터가 내장된 컬러맵을 하나씩 순서대로 적용받으며 색상이 자동으로 전환되는 애니메이션이 재생됩니다. 각 장면마다 제목에 현재 적용 중인 컬러맵의 이름이 함께 표시되므로, 어떤 컬러맵이 어떤 느낌을 주는지 쉽게 비교할 수 있습니다.

참고로 frames=166 값은 Matplotlib 버전에 내장된 컬러맵의 개수와 맞추면 됩니다. 최신 버전에서는 len(plt.colormaps())으로 개수를 직접 구해 지정할 수 있어, 버전이 달라져도 코드를 그대로 재사용할 수 있습니다.