Matplotlib에서 히스토그램을 그릴 때 plt.hist() 함수의 bins 매개변수를 활용하면 로그 스케일의 빈(bin)을 간단하게 설정할 수 있습니다. 데이터가 넓은 범위에 걸쳐 분포되어 있거나 지수적으로 증가하는 경우, 로그 스케일 빈을 사용하면 분포를 훨씬 직관적으로 파악할 수 있습니다.
구현 단계
범위가 100인 배열
x를 생성합니다.plt.hist()메서드로 히스토그램을 그립니다. 이때np.logspace()를 사용하면 로그 스케일에서 균등한 간격으로 배치된 숫자들을 빈 경계값으로 전달할 수 있습니다.plt.gca()로 현재 축(axes) 객체를 가져온 뒤, X축의 스케일을 로그(log)로 설정합니다.plt.show()메서드를 호출하여 완성된 그래프를 화면에 표시합니다.
예제 코드
from matplotlib import pyplot as plt
import numpy as np
x = np.array(range(100))
plt.hist(x, bins=np.logspace(start=np.log10(10), stop=np.log10(15), num=10))
plt.gca().set_xscale("log")
plt.show()코드 설명
np.logspace(start, stop, num)은 10의 거듭제곱 형태로 숫자를 생성하는 함수입니다. 위 예제에서는 시작값을 10¹, 끝값을 10¹⁵로 지정하고 총 10개의 빈 경계를 만들었습니다. 또한 set_xscale("log")를 호출해 X축 자체도 로그 스케일로 변경했기 때문에, 각 빈의 폭이 화면상에서 동일하게 보이면서 로그 간격의 분포를 명확하게 확인할 수 있습니다.
실행 결과
