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

Matplotlib semilogx·semilogy로 로그 스케일 플롯 그리는 방법

semilogxsemilogy는 Matplotlib에서 각각 X축 또는 Y축에만 로그(log) 스케일을 적용할 때 사용하는 함수입니다. 데이터 값이 지수적으로 증가하거나 여러 자릿수(order of magnitude)에 걸쳐 분포해 있을 때, 로그 스케일을 활용하면 추세를 훨씬 직관적으로 확인할 수 있습니다.

semilogx·semilogy 플롯 만들기 단계

  • 그림(figure) 크기를 설정하고, 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
  • 새 figure를 생성하거나 기존 figure를 활성화합니다.
  • x, y 데이터 포인트를 산점도(scatter)와 선 그래프(plot)로 시각화합니다.
  • semilogx()를 호출하여 X축에 로그 스케일을 적용한 플롯을 만듭니다.
  • semilogy()를 호출하여 Y축에 로그 스케일을 적용한 플롯을 만듭니다.
  • show() 메서드를 사용해 최종 그림을 화면에 표시합니다.

예제 코드

import matplotlib.pyplot as plt

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

x = [10, 100, 1000, 10000, 100000]
y = [2, 4, 8, 16, 32]

fig = plt.figure()

plt.scatter(x, y)
plt.plot(x, y)

plt.semilogx()
plt.semilogy(basey=2)

plt.show()

위 예제에서 x 데이터는 10부터 10⁵까지 10배씩 증가하고, y 데이터는 2부터 32까지 2배씩 증가합니다. semilogx()가 X축을 상용로그(밑수 10) 스케일로 변환하고, semilogy(basey=2)가 Y축을 밑수 2인 로그 스케일로 변환하기 때문에, 원래는 급격하게 치솟는 곡선이 그래프 위에서 거의 직선에 가까운 형태로 나타납니다.

참고: Matplotlib 3.3 이상 버전에서는 basey, basex 매개변수가 더 이상 사용되지 않습니다(deprecated). 대신 plt.semilogy(base=2)처럼 base 매개변수를 사용하는 것이 좋습니다.

실행 결과

Matplotlib semilogx·semilogy로 로그 스케일 플롯 그리는 방법

결과 그림을 보면 X축 눈금이 10¹, 10², 10³, 10⁴, 10⁵로 표시되어 로그 간격으로 배치되고, Y축 역시 밑수 2 기준의 로그 눈금으로 표시됩니다. 이처럼 로그 스케일 플롯은 지수적 성장 데이터를 한눈에 파악하는 데 매우 유용합니다.