Matplotlib에서 컬러바(colorbar)에 원하는 눈금(tick)을 추가하려면 다음 단계를 따르면 됩니다.
컬러바 눈금 추가 절차
- 그림(figure) 크기를 설정하고 서브플롯(subplot) 주변 및 사이의 여백(padding)을 조정합니다.
- numpy를 사용하여 x, y, z 데이터 포인트를 생성합니다.
- imshow() 메서드를 사용해 데이터를 2D 래스터(raster) 형태의 이미지로 표시합니다.
- numpy의 linspace 등을 활용하여 z 값의 최솟값(min)과 최댓값(max) 범위 내에서 눈금 배열을 만듭니다.
- ScalarMappable 인스턴스에 대한 컬러바를 생성할 때 ticks=ticks 인자를 전달하여 눈금을 지정합니다.
- 마지막으로 show() 메서드를 호출하여 그림을 화면에 출력합니다.
예제 코드
import numpy as np import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True x, y = np.mgrid[-1:1:100j, -1:1:100j] z = (x + y) * np.exp(-5.0 * (x ** 2 + y ** 2)) plt.imshow(z, extent=[-1, 1, -1, 1]) ticks = np.linspace(z.min(), z.max(), 5, endpoint=True) cb = plt.colorbar(ticks=ticks) plt.show()
코드 설명
위 코드에서 np.mgrid는 -1부터 1까지의 범위를 100×100 격자로 나누어 x, y 좌표를 생성합니다. 이후 가우시안 형태의 함수를 적용해 z 값을 계산하고, imshow()로 이를 이미지처럼 시각화합니다.
핵심은 np.linspace(z.min(), z.max(), 5) 부분입니다. z의 최솟값부터 최댓값까지 균등하게 5개의 눈금을 생성한 뒤, plt.colorbar(ticks=ticks)에 전달함으로써 컬러바에 정확히 해당 위치에 눈금이 표시됩니다. 눈금 개수나 간격을 조절하고 싶다면 linspace의 세 번째 인자 숫자만 변경하면 됩니다.
실행 결과
코드를 실행하면 2D 이미지 오른쪽에 컬러바가 나타나며, 지정한 5개의 눈금 값이 컬러바에 균등하게 배치된 것을 확인할 수 있습니다.