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

Python Matplotlib에서 여러 플롯에 공통으로 사용할 표준 컬러바 만드는 방법

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 오른쪽에 해당 데이터의 색상 분포를 나타내는 세로형 컬러바가 함께 나타납니다.