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

Matplotlib 히스토그램 데이터로 선 그래프 그리는 방법

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, '-'): 계산된 중심 좌표와 빈도수를 연결해 히스토그램과 동일한 분포를 가지는 선 그래프를 완성합니다.

실행 결과

위 코드를 실행하면 첫 번째 서브플롯에는 검은 테두리를 가진 히스토그램이, 두 번째 서브플롯에는 동일한 데이터 분포가 부드러운 곡선 형태의 선 그래프로 표시됩니다. 이 방식은 히스토그램보다 데이터의 전체적인 분포 추세를 한눈에 파악할 때 유용합니다.