Matplotlib에서 히스토그램 데이터를 바탕으로 선 그래프를 그리려면 numpy의 histogram 메서드를 사용해 데이터 집합의 히스토그램 값을 계산한 뒤, 이를 plot() 메서드로 시각화하면 됩니다.
구현 단계
현재 figure에 서브플롯을 추가합니다. 이때 nrows=2, ncols=1, index=1로 설정합니다.
numpy.histogram() 메서드를 사용해 데이터 집합의 히스토그램 값을 계산합니다.
hist() 메서드에 edgecolor='black' 옵션을 지정해 히스토그램을 그립니다.
index=2 위치의 서브플롯에서는 numpy histogram으로 계산된 데이터를 활용하고, plot() 메서드를 사용해 선 그래프로 나타냅니다.
마지막으로 show() 메서드를 호출해 figure를 화면에 표시합니다.
예제 코드
import numpy as np from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True plt.subplot(211) data = np.array(np.random.rand(100)) y, binEdges = np.histogram(data, bins=100) plt.hist(data, bins=100, edgecolor='black') plt.subplot(212) bincenters = 0.5 * (binEdges[1:] + binEdges[:-1]) plt.plot(bincenters, y, '-', c='black') plt.show()
코드 설명
np.random.rand(100): 0과 1 사이의 난수 100개를 생성해 샘플 데이터로 사용합니다.
np.histogram(data, bins=100): 각 구간(bin)별 빈도수(y)와 구간 경계값(binEdges)을 반환합니다.
bincenters: 인접한 두 경계값의 평균을 계산해 각 막대의 중심 x 좌표를 구합니다. 선 그래프를 매끄럽게 그리기 위해 필수적인 과정입니다.
plt.plot(bincenters, y, '-'): 계산된 중심 좌표와 빈도수를 연결해 히스토그램과 동일한 분포를 가지는 선 그래프를 완성합니다.
실행 결과
위 코드를 실행하면 첫 번째 서브플롯에는 검은 테두리를 가진 히스토그램이, 두 번째 서브플롯에는 동일한 데이터 분포가 부드러운 곡선 형태의 선 그래프로 표시됩니다. 이 방식은 히스토그램보다 데이터의 전체적인 분포 추세를 한눈에 파악할 때 유용합니다.