[matplotlib]n차원 데이터 그리기

반응형
    반응형

     

    matplotlib를 이용해 n차원 데이터를 그리는 방법을 살펴볼까 합니다.

    2차원을 먼저 살펴보고 n차원을 그려보겠습니다.

    n차원 사실상 숫자가 정해져 있지 않으니 n=10으로 정하겠습니다.

    n차원이라 해서 어려운 건 없고 하나의 plot에 그래프 갯수가 n개 나온다는 것뿐입니다. 

     

    2차원 데이터

    랜덤으로 (10,2) 모양의 데이터를 가져오겠습니다.

    import matplotlib as plt
    import numpy as np
    y = np.random.standard_normal((10,2))
    y

     

    그래프를 그리면 첫번째 column과 두번째 column으로 나눠집니다.

    plt.plot(y,lw=1.5)
    plt.plot(y,'ro')

    2차원이라서 두개로 나눠집니다. n차원이라면 n으로 나눠지게 됩니다.

     

    구분이 안 되니 label을 붙이겠습니다. label은 각 column마다 붙입니다.

    결국 1차원데이터를 2번 plot하는 것과 같게 됩니다.

    plt.plot(y[:,0],lw=1.5,label='1column')
    plt.plot(y[:,1],lw=1.5,label='2column')
    plt.plot(y,'ro')
    plt.legend(loc=0)

     

    n차원

    랜덤으로 (10,10) 데이터를 가지고 그래프를 그려보겠습니다.

     

    y = np.random.standard_normal((10,10))
    y
    

     

    그래프를 그리면 10차원이니 10개의 그래프가 나옵니다.

    plt.plot(y,lw=1.5)
    plt.plot(y,'ro')

     

    10차원이라 구분을 하기가 더 어렵습니다.

    그래서 label을 붙이고 점 때문에 더 구분이 어려운것같으니 없애겠습니다. 

    그렇다고 많이 구분이 되는 건 아니지만 조금은 나으니 시도해봅니다.

    일일히 코드를 작성하기가 어려우니 for문을 통해서 그래프를 그리면 다음과 같이 나옵니다.

     

    for i in range(len(y)):
        plt.plot(y[:,i],label=f'{i}colomn')
        plt.legend(bbox_to_anchor=(1,1))

     

    이렇게 for문을 사용하면 n차원이어도 쉽게 그래프를 그릴 수 있게 됩니다.

    bbox_to_anchor를 이용하면 밖으로 label을 뺄수 있어서 한결 보기가 편합니다.

    자세한 내용은 포스팅을 해놨으니 참고해주시기 바랍니다.

     

    관련포스팅

    [Python/matplotlib] - [matplotlib]plt 라벨(label) 위치설정

    [Python/기초] - [Python] for 반복문

    댓글

    Designed by JB FACTORY

    ....