Matplotlib으로 여러 플롯을 그릴 때 각 플롯마다 컬러바가 따로 생성되면 색상 범위를 비교하기 어렵습니다. 이럴 때 표준(공통) 컬러바를 하나 만들어 모든 플롯에 동일하게 적용하면 데이터를 직관적으로 비교할 수 있습니다.
일련의 플롯에 대한 표준 컬러바를 만들려면 다음 단계를 따르면 됩니다.
NumPy를 사용해 랜덤 데이터를 생성합니다.
subplots() 메서드로 figure와 서브플롯을 생성합니다. 이때 nrows=1, ncols=1로 설정합니다.
imshow() 메서드를 사용해 데이터를 이미지 형태로 표시합니다.
add_axes() 메서드로 figure에 컬러바 전용 axes를 추가합니다.
colorbar() 메서드로 컬러바를 생성합니다. 이때 mappable 인스턴스는 앞서 만든 이미지(im)이고, cax에는 컬러바가 그려질 axes를 지정합니다.
show() 메서드를 호출해 figure를 화면에 출력합니다.
예제 코드
import numpy as np import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True data = np.random.rand(4, 4) fig, ax = plt.subplots(nrows=1, ncols=1) im = ax.imshow(data) cax = fig.add_axes([0.9, 0.1, 0.03, 0.8]) fig.colorbar(im, cax=cax) plt.show()
코드 설명
fig.add_axes([0.9, 0.1, 0.03, 0.8]) 부분이 핵심입니다. 리스트의 네 값은 각각 [왼쪽 여백, 아래쪽 여백, 너비, 높이]를 의미하며, figure 전체 크기에 대한 비율로 지정됩니다. 위 예제에서는 figure 오른쪽 끝에 세로로 긴 컬러바 영역을 배치했습니다.
만약 여러 개의 플롯(subplots)에 대해 하나의 공통 컬러바를 적용하고 싶다면, 각 플롯의 vmin과 vmax 값을 동일하게 설정한 후 마지막에 한 번만 colorbar를 추가하면 됩니다. 이렇게 하면 모든 플롯이 같은 색상 스케일을 공유하게 되어 데이터 간 비교가 훨씬 쉬워집니다.
출력 결과
코드를 실행하면 4×4 크기의 랜덤 데이터가 히트맵 형태로 표시되고, figure 오른쪽에 해당 데이터의 색상 분포를 나타내는 세로형 컬러바가 함께 나타납니다.