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

Matplotlib에서 참/거짓(True/False) 또는 활성/비활성 데이터를 플롯하는 방법

Matplotlib을 사용하면 참/거짓(True/False) 또는 활성/비활성(Active/Inactive)과 같은 이진(Boolean) 데이터를 이미지 형태로 손쉽게 시각화할 수 있습니다. imshow() 함수를 활용하면 불리언 값으로 구성된 2차원 배열을 컬러 맵(color map)이 적용된 래스터 이미지로 표현할 수 있습니다.

구현 단계

  • figure.figsizefigure.autolayout rcParams를 설정하여 그림 크기와 서브플롯 간 여백(padding)을 조정합니다.
  • NumPy의 난수 배열에 조건 비교를 적용해 True 또는 False로만 구성된 데이터를 생성합니다.
  • figure() 메서드를 사용해 새 그림을 생성하거나 기존 그림을 활성화합니다.
  • add_subplot() 메서드로 그림에 '~.axes.Axes' 축을 서브플롯 형태로 추가합니다.
  • imshow() 메서드를 사용해 데이터를 2D 래스터 이미지로 화면에 표시합니다.
  • show() 메서드를 호출해 최종 그림을 출력합니다.

예제 코드

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# 20x20 크기의 난수 배열을 생성하고 0.5보다 큰 값을 True로 변환
data = np.random.random((20, 20)) > 0.5
fig = plt.figure()
ax = fig.add_subplot(111)
ax.imshow(data, aspect='auto', cmap="copper", interpolation='nearest')

plt.show()

출력 결과

Matplotlib에서 참/거짓(True/False) 또는 활성/비활성 데이터를 플롯하는 방법

코드 설명 및 추가 팁

위 예제에서 핵심 부분은 다음 코드입니다:

data = np.random.random((20, 20)) > 0.5

NumPy의 random.random() 함수는 0과 1 사이의 실수 난수로 채워진 20×20 배열을 생성합니다. 여기에 비교 연산자(>)를 적용하면 각 요소가 0.5보다 큰지 여부에 따라 True 또는 False 값을 갖는 불리언 배열이 만들어집니다. Matplotlib은 이러한 불리언 값을 자동으로 1과 0으로 해석하여 색상으로 매핑합니다.

cmap 인자에는 'copper' 외에도 'binary', 'gray', 'viridis' 등 다양한 컬러 맵을 지정할 수 있습니다. 특히 참/거짓 데이터를 명확하게 구분하고 싶다면 'binary' 컬러 맵을 사용하는 것이 좋습니다. 또한 interpolation='nearest' 옵션은 각 셀 경계가 흐릿해지는 것을 방지하여 픽셀 단위의 선명한 결과를 얻을 수 있게 해줍니다.