Matplotlib으로 히스토그램을 그릴 때 각 빈(bin)에 대한 상세 정보를 얻고 싶다면, NumPy의 histogram() 메서드를 활용하면 됩니다. 이 메서드는 빈도수와 빈 경계값을 함께 반환해 주기 때문에, 이후 막대 그래프 등 다양한 형태로 시각화할 수 있습니다.
처리 단계
- 데이터와 빈 범위로 사용할 숫자 리스트를 생성합니다.
- histogram() 메서드를 사용하여 데이터 집합의 히스토그램을 계산합니다.
- 히스토그램 계산 결과에서 hist(각 빈의 도수)와 edges(빈의 경계값)를 추출합니다.
- 전체 합계에 대한 비율로 빈도(frequency)를 계산합니다.
- 1단계의 bins 데이터와 4단계의 freq 데이터를 사용하여 막대 그래프를 그립니다.
- 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" 옵션을 사용하면 막대가 빈 경계값에 맞춰 정렬됩니다.
실행 결과
