Matplotlib 컬러맵(colormap)에서 특정 값에 해당하는 색상을 재정의하려면 다음 단계를 따르면 됩니다.
- get_cmap() 메서드를 사용해 컬러맵 인스턴스를 가져옵니다. 이름을 지정하지 않으면 rc 설정값이 기본으로 사용되며, 여기서는 'gray' 컬러맵을 사용합니다.
- set_under() 메서드를 사용해 norm.clip=False일 때 범위보다 낮은 값(out-of-range low)에 적용할 색상을 지정합니다.
- imshow() 메서드로 데이터를 2D 정규 래스터(raster) 형태의 이미지로 표시합니다.
- show() 메서드로 최종 그림(figure)을 화면에 출력합니다.
예제 코드
import numpy as np
from matplotlib import pyplot as plt, cm
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
cmap = cm.get_cmap('gray')
cmap.set_under('red')
plt.imshow(np.arange(25).reshape(5, 5),
interpolation='none',
cmap=cmap,
vmin=.001)
plt.show()코드 동작 방식
vmin=0.001로 정규화 하한을 설정했기 때문에, 그보다 작은 값인 배열의 첫 번째 요소 0은 컬러맵의 정상 범위를 벗어나게 됩니다. 이때 set_under('red')로 빨간색을 지정했으므로 해당 셀만 빨간색으로 렌더링되고, 나머지 값들은 회색조(gray) 컬러맵에 따라 표시됩니다.
참고 사항
Matplotlib 3.7부터 cm.get_cmap()은 사용이 권장되지 않습니다(deprecated). 최신 버전에서는 plt.get_cmap('gray') 또는 matplotlib.colormaps['gray']를 사용하는 것이 좋습니다.
실행 결과
