Matplotlib에서 히트맵(heatmap)의 상단 또는 하단 삼각형 부분만 표시하고 싶다면, NumPy를 이용해 마스크(mask)가 적용된 2차원 배열을 만든 뒤 이를 이미지 형태로 변환하여 히트맵을 생성할 수 있습니다. 상관관계 행렬처럼 대칭 구조를 가진 데이터를 시각화할 때 불필요한 중복을 제거해 가독성을 크게 높일 수 있는 유용한 기법입니다.
구현 단계
그림 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
5×5 크기의 무작위(random) 데이터를 생성합니다.
numpy.tri() 메서드를 사용하여 지정한 대각선 아래쪽(및 대각선 자체)에는 1, 나머지 위치에는 0이 채워진 배열을 만듭니다.
3번 단계에서 만든 배열을 마스크로 사용하여 마스크 처리된 2차원 배열을 얻습니다.
imshow() 메서드를 사용해 데이터를 이미지, 즉 2차원 정규 래스터(raster) 형태로 화면에 표시합니다.
그림을 출력하기 위해 show() 메서드를 호출합니다.
예제 코드
import numpy as np from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True data = np.random.rand(5, 5) mask = np.tri(data.shape[0], k=-1) data = np.ma.array(data, mask=mask) plt.imshow(data, interpolation="nearest", cmap='copper') plt.show()
실행 결과
위 코드를 실행하면 대각선 아래쪽 영역은 마스크되어 흰색으로 비어 있고, 대각선 위쪽 삼각형 영역의 값만 'copper' 컬러맵으로 표현된 히트맵이 출력됩니다.

참고: 하단 삼각형만 표시하기
반대로 하단 삼각형만 남기고 싶다면 마스크 배열을 반전시키면 됩니다. mask = np.tri(data.shape[0], k=-1) 대신 mask = np.triu(np.ones(data.shape), k=1)을 사용하거나, 기존 마스크에 np.logical_not()을 적용하면 원하는 방향으로 표시 영역을 손쉽게 변경할 수 있습니다.