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

Matplotlib에서 누적 분포 함수(CDF)의 로그 플롯 그리는 방법

Matplotlib에서 누적 분포 함수(CDF, Cumulative Distribution Function)를 로그 스케일로 시각화하려면, 샘플 데이터를 정렬한 후 누적 확률 값을 계산하고 x축과 y축을 각각 로그 스케일로 설정하면 됩니다. 아래에서 단계별로 자세히 살펴보겠습니다.

구현 단계

  • figure 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
  • 샘플 데이터의 개수를 나타내는 변수 N을 초기화합니다.
  • numpy를 사용하여 데이터와 누적 분포 값(X2, F2)을 생성합니다.
  • plot() 메서드로 X2와 F2를 그립니다.
  • x축과 y축을 모두 로그 스케일로 변경합니다.
  • show() 메서드로 그래프를 화면에 표시합니다.

예제 코드

import numpy as np
import matplotlib.pyplot as plt

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

N = 100
data = np.random.randn(N)
X2 = np.sort(data)
F2 = np.array(range(N))/float(N)

plt.plot(X2, F2)

plt.xscale('log')
plt.yscale('log')

plt.show()

코드 설명

np.random.randn(N)은 평균이 0이고 표준편차가 1인 표준 정규분포를 따르는 난수 100개를 생성합니다. 이 데이터를 np.sort()로 오름차순 정렬하여 X2에 저장하고, 각 데이터 포인트의 순위를 전체 개수로 나눈 값(F2)을 경험적 누적 분포 값으로 사용합니다. 마지막으로 plt.xscale('log')plt.yscale('log')를 호출해 두 축을 로그 스케일로 변환하면, 넓은 범위의 값을 한눈에 비교하기 쉬운 로그-로그 플롭이 완성됩니다.

실행 결과

위 코드를 실행하면 정규분포 난수에 대한 누적 분포 곡선이 x축과 y축 모두 로그 스케일로 표시된 그래프가 출력됩니다. 로그 스케일을 적용하면 데이터가 여러 자릿수(order of magnitude)에 걸쳐 분포할 때도 패턴을 명확하게 확인할 수 있습니다.