본문 바로가기
공부 목록/IT & 프로그래밍

[python] 데이터 분석을 위한 그래프 축 스케일 변경하기

by 독학박사 2023. 8. 15.

목차


     데이터의 특성에 따라 원본 그대로 보는 것보다 스케일을 조정하는 것이 필요할 때가 있습니다. 로그함수의 경우 그래프 축을 로그로 변경하면 직선이 되기 때문에 데이터 분석에 도움이 됩니다. 이번 글에서는 그래프의 축을 변경하는 방법과 변경 인자에 따른 그래프의 형상이 어떻게 변경되는지 확인해 보도록 하겠습니다.

     

    목적에 따른 그래프 축 스케일 조정
    목적에 따른 그래프 축 스케일 조정

     

     

    1 그래프 축의 스케일 변경 인자

     그래프 축을 변경하는 함수는 matplotlib.pyplot 모듈에서 제공하는 xscale이나 yscale 함수를 사용합니다. 함수형태로 사용하게 되면 plt.xscale이나 plt.yscale 같이 사용을 하지만 객체 형태로 정의되었을 경우에는 ax.set_xscale 또는 ax.set_yscale과 같이 메서드 형태로 사용해야 합니다.

     

    # 함수 형태로 사용
    plt.xscale('scale_type')
    plt.yscale('scale_type')
    
    # 객체 형태로 사용
    fig, ax = plt.subplots()
    ax.set_xscale('scale_type')
    ax.set_yscale('scale_type')

     

     scale type에는 총 4개의 값을 넣을 수 있습니다. 각 인자값에 대한 설명은 아래와 같습니다.

     

    'linear': 일반적인 선형 스케일입니다.
    'log': 로그 스케일로 x 축을 표시합니다.
    'symlog': 대칭 로그 스케일로, 0 주변의 작은 값들도 표시됩니다.
    'logit': 로짓 스케일로, 0과 1 사이의 값들을 표시할 때 유용합니다.

     

     

     

    2. xscale의 사용

     xscale과 yscale의 사용의 목적이 조금 다를 수 있습니다. x축의 스케일을 변경한다는 것은 데이터 개수와 관련이 있습니다. 데이터 개수의 분포를 잘 펴주기 위해 x축의 스케일을 조정할 수 있습니다. 다음은 xscale을 사용하여 비교한 예제입니다.

     

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(-10, 10, 100)
    y = x ** 3
    
    fig, ax = plt.subplots(3, 1)
    
    ax[0].plot(x, y)
    ax[0].set_title('Linear')
    
    ax[1].plot(x, y)
    ax[1].set_xscale('log')
    ax[1].set_title('Log')
    
    ax[2].plot(x, y)
    ax[2].set_xscale('symlog')
    ax[2].set_title('Symlog')
    
    # 간격 조정 및 출력
    plt.tight_layout()
    plt.show()

     

     어떠한 스케일 조정이 없을 경우에는 3차 방정식의 그래프의 직선 구간을 잘 표기하지 못했습니다. symlog의 경우 좌우 대칭을 나타내며 log 스케일을 나타내기 때문에 3차 방정식에서 직선 구간을 늘릴 수 있습니다.

     

    xscale을 사용하여 x축의 데이터 분포를 조정
    xscale을 사용하여 x축의 데이터 분포를 조정

     

     

    3. yscale의 사용

     xscale이 데이터 분포의 조정이라면 yscale은 데이터 값의 표준화라고 할 수 있습니다. 복잡한 데이터의 값을 단순화시켜 줄 수 있기 때문에 데이터 분석에 있어 인사이트를 찾기에 도움이 됩니다. 다음은 yscale을 적용하여 데이터 표준화(standardization)를 진행한 결과입니다.

     

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0, 5, 100)
    y = np.exp(x)
    
    fig, ax = plt.subplots(2, 1)
    ax[0].plot(x, y)
    ax[0].set_yscale('linear')
    ax[0].set_title('Linear')
    
    ax[1].plot(x,y)
    ax[1].set_yscale('log')
    ax[1].set_title('Log')
    
    # 간격 조정 및 출력
    plt.tight_layout()
    plt.show()

     

     y의 값이 로그 함수를 나타내기 때문에 y축의 스케일을 로그로 변경하면 직선의 그래프를 얻을 수 있습니다.

     

    log 함수의 그래프는 log 스케일로 하면 직선이 된다
    log 함수의 그래프는 log 스케일로 하면 직선이 된다

     

     

    4. 마치며

     파이썬으로 그래프를 가시화할 때 각 축의 스케일을 목적에 맞게 조정할 수 있는 xscale과 yscale 함수에 대해 정리해 봤습니다. xscale은 데이터 개수의 분포를 펴 줄 때, yscale은 데이터 값의 표준화를 위해 사용할 수 있습니다.

    댓글