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

Matplotlib로 로그 스케일 그래프에 보조 눈금 레이블 표시하기

Matplotlib에서 로그 스케일(log scale)을 적용한 그래프에 보조 눈금(minor tick) 레이블을 표시하려면 몇 가지 단계를 순서대로 따라 하면 됩니다.

구현 단계

  • 그림(figure) 크기를 설정하고, 서브플롯 주변과 사이의 여백(padding)을 조정합니다.
  • NumPy를 사용하여 x, y 데이터 포인트를 생성합니다.
  • plot() 메서드로 x와 y 데이터를 그래프에 그립니다.
  • gca() 메서드로 현재 축(current axis) 객체를 가져옵니다.
  • set_yscale('log')으로 y축을 로그 스케일로 설정합니다.
  • tick_params() 메서드를 사용해 눈금과 눈금 레이블의 모양을 변경합니다.
  • FormatStrFormatter를 이용해 보조 축(minor axis) 포매터를 설정하고, 지정한 형식 문자열로 보조 눈금 레이블을 포맷합니다.
  • show() 메서드로 그래프를 화면에 출력합니다.

예제 코드

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import FormatStrFormatter

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

x = np.linspace(-2, 2, 10)
y = np.exp(x)

plt.plot(x, y)

ax = plt.gca()
ax.set_yscale('log')

plt.tick_params(axis='y', which='minor')
ax.yaxis.set_minor_formatter(FormatStrFormatter("%.1f"))

plt.show()

코드 설명

위 예제에서는 np.linspace(-2, 2, 10)으로 -2부터 2까지 10개의 균등한 간격의 x값을 만들고, 각 값에 대한 지수 함수 y = e^x를 계산합니다. y축을 로그 스케일로 변환하면 지수적으로 증가하는 데이터가 직선 형태로 표현되어 변화 추이를 더 명확하게 확인할 수 있습니다.

핵심은 plt.tick_params(axis='y', which='minor')로 보조 눈금을 활성화하고, ax.yaxis.set_minor_formatter(FormatStrFormatter("%.1f"))를 통해 소수점 첫째 자리까지 표시하는 형식 문자열을 지정하는 부분입니다. 이렇게 하면 기본적으로 숨겨져 있던 보조 눈금 레이블(예: 0.3, 0.5, 0.7 등)이 y축에 함께 나타나게 됩니다.

실행 결과

코드를 실행하면 y축이 로그 스케일로 표시된 그래프가 나타나며, 주 눈금(major ticks)뿐만 아니라 보조 눈금 위치에도 소수점 한 자리 형식의 숫자 레이블이 함께 표시되는 것을 확인할 수 있습니다.