데이터 시각화를 하다 보면 값의 범위가 매우 넓어 일반적인 선형 축으로는 그래프가 제대로 표현되지 않는 경우가 있습니다. 이럴 때 파이썬의 matplotlib 라이브러리에서 제공하는 plt.yscale() 함수를 사용하면 Y축에 로그 기반 스케일을 간단하게 적용할 수 있습니다.
이 글에서는 symlog(symmetric log) 스케일을 활용해 Y축을 지수적으로 확장하는 방법을 단계별로 살펴보겠습니다. symlog 스케일은 양수와 음수 값이 모두 포함된 데이터를 자연스럽게 표현할 수 있어 특히 유용합니다.
Y축 스케일 변경 절차
rcParams의figure.figsize와figure.autolayout옵션으로 그림 크기와 서브플롯 주변 여백을 조정합니다.- 데이터 생성 간격을 정하기 위해 변수
dt를 초기화합니다. - numpy를 이용해 x, y 데이터 포인트를 만듭니다.
plt.plot()으로 x, y 데이터를 그래프에 그립니다.plt.yscale('symlog')를 호출하여 Y축에 대칭 로그 스케일을 적용합니다.plt.show()메서드로 완성된 그래프를 화면에 표시합니다.
예제 코드
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
dt = 0.01
x = np.arange(-50.0, 50.0, dt)
y = np.arange(0, 100.0, dt)
plt.plot(x, y)
plt.yscale('symlog')
plt.show()
실행 결과
위 코드를 실행하면 아래와 같은 그래프가 출력됩니다. 첫 번째 이미지는 기본 선형 스케일의 결과이며, 두 번째 이미지는 symlog 스케일이 적용되어 Y축 눈금이 지수 단위(1, 10, 100 등)로 표시되는 것을 확인할 수 있습니다.


참고: log와 symlog의 차이점
'log' 스케일은 0 또는 음수 값을 표현할 수 없어 해당 값이 포함된 데이터에서는 오류나 빈 그래프가 나타날 수 있습니다. 반면 'symlog'는 원점을 중심으로 대칭적으로 로그 스케일을 적용하기 때문에 음수 영역과 0 근처의 값도 문제없이 시각화할 수 있습니다. 데이터에 음수나 0이 섞여 있다면 symlog를 사용하는 것이 안전합니다.