semilogx와 semilogy는 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 매개변수를 사용하는 것이 좋습니다.
실행 결과

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