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

Matplotlib 히스토그램에서 빈(Bin) 정보 추출하기

Matplotlib으로 히스토그램을 그릴 때 각 빈(bin)에 대한 상세 정보를 얻고 싶다면, NumPy의 histogram() 메서드를 활용하면 됩니다. 이 메서드는 빈도수와 빈 경계값을 함께 반환해 주기 때문에, 이후 막대 그래프 등 다양한 형태로 시각화할 수 있습니다.

처리 단계

  1. 데이터와 빈 범위로 사용할 숫자 리스트를 생성합니다.
  2. histogram() 메서드를 사용하여 데이터 집합의 히스토그램을 계산합니다.
  3. 히스토그램 계산 결과에서 hist(각 빈의 도수)와 edges(빈의 경계값)를 추출합니다.
  4. 전체 합계에 대한 비율로 빈도(frequency)를 계산합니다.
  5. 1단계의 bins 데이터와 4단계의 freq 데이터를 사용하여 막대 그래프를 그립니다.
  6. show() 메서드를 호출하여 그림을 화면에 표시합니다.

예제 코드

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
a = [-0.125, .15, 8.75, 72.5, -44.245, 88.45]
bins = np.arange(-180, 181, 20)
hist, edges = np.histogram(a, bins)
freq = hist/float(hist.sum())
plt.bar(bins[:-1], freq, width=20, align="edge", ec="k", color='red')
plt.show()

코드 설명

위 예제에서는 np.arange(-180, 181, 20)을 통해 -180부터 180까지 20 간격의 빈 경계를 생성했습니다. np.histogram(a, bins)은 두 개의 배열을 반환하는데, 첫 번째는 각 빈에 속한 데이터의 개수(hist), 두 번째는 빈의 경계값(edges)입니다. 이후 hist.sum()으로 나누어 전체 대비 비율인 freq를 구하고, plt.bar()로 막대 그래프를 그립니다. 이때 align="edge" 옵션을 사용하면 막대가 빈 경계값에 맞춰 정렬됩니다.

실행 결과

Matplotlib 히스토그램에서 빈(Bin) 정보 추출하기