ndarray 데이터로 그래프 그리기(matplotlib)

반응형
    반응형

    matplotlib로 ndarray의 그래프를 그려보겠습니다.

    참고로 Jupyter notebook에서 코드작성합니다.

    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline

    matplotlib 모듈을 이용해서 그래프를 그릴수 있는데 jupyter는 브라우저상의 개발도구라서 바로

    그래프를 나타내야 한다고 명령을 따로 해줘야 합니다. '현 웹창에 당장 그래프를 그려줘'라는

    명령을 내려줘야 하는데 그 명령이 %matplotlib inline입니다. 

     

    데이터

    이렇게 import를 하면 이제 그래프를 생성할 수 있는 도구는 다 모은 셈입니다.

    그래프를 그릴려면 먼저 데이터가 있어야겠지요.

    x,y로 ndarray를 만들겠습니다.

    x = np.linspace(0,10,11)
    y = x**2
    print(x)
    print(y)

    간단한 ndarray를 만들었습니다. linspace로 x를 만들고 y는 x에 대한 함수로 놓았습니다.

     

    linsapce에 대해 알고 싶다면 다음 포스팅을 참고해주세요.

    [Python/Numpy] - ndarray 생성하기

     

    ndarray 생성하기

    ndarray를 생성하는 다양한 방법을 소개하겠습니다. 생성에 앞서 numpy를 불러오겠습니다. import numpy as np import를 하면 모듈을 불러올 수 있습니다. numpy가 잘 설치가 되었다면 아마 오류없이 불러올

    seong6496.tistory.com

     

    그래프 출력

    데이터는 만들었으니 그래프를 만들어봅시다. plot,scatter,hist 에 대해서 설명하겠습니다.

    그래프에 대한 기본적인 설명을 하면 matplotlib,pyplot을 통해 그려지게 되는데 matplotlib.pyplot을 일일히 쓰기가 어려우므로 plt로 쓰고 당연한 얘기일수 있으나 x,y 에 해당하는 값이 각각 필요하게 됩니다.

     

    먼저 plot(선 그래프)를 그리게 되면 다음과 같이 나옵니다.

    plt.plot(x,y)

    우리가 수학시간에 배웠던 함수의 모양이 나오는 것을 볼 수 있습니다. 

    선 그래프보다는 점 그래프를 선호한다면 scatter를 쓰면 됩니다.

    plt.scatter(x,y)

     

    그래프 주석 

    그래프만 떡하니 그리면 횡하기도 하고 무슨 그래프인지 보기 쉽게 설명을 해주어야 합니다. 조금 꾸며주기도 하고 무엇을 나타내는 그래프인지 x값은 무엇이고 y값은 무엇인지 표시를 해야겠습니다. plt에서 추가를 할 수가 있습니다.

    • x,y 축 및 타이틀
    plt.plot(x,y)
    plt.xlabel('x values')
    plt.ylabel('y values')
    plt.title('x-y')
    

    x축의 이름을 붙이려면 plt.xlabel을 y축은 plt.ylabel로 추가해주시면 되고 그래프의 제목은 plt.title로 하면 되겠습니다.

     

    • grid 와 x축,y축 범위 변경
    plt.grid(True)
    plt.xlim(0,20)
    plt.ylim(0,200)
    plt.plot(x,y)

    모눈종이처럼 줄을 넣으려면 plt.grid(True)를 넣고 x축의 범위를 변경하고 싶으면 plt.xlim을 y축의 범위는 plt.ylim으로 변경할 수 있습니다. 각자 자신의 편의에 맞게 바꾸실 수 있습니다.

     

    • 선그래프 색상 변경

    plot 함수를 기준으로 설명하겠습니다. 다른 그래프도 비슷하게 적용되니 충분히 응용하실 수 있을 겁니다.

    plt.plot(x,y,'#ff000f')

    선색상을 바꾸려면 파라미터에 색상을 입력하던지 RGB 색상을 입력하면 되겠습니다. 

    색상은 기본적인 red,blue,green,yellow 이런 기본 색상만 가능합니다.

     

    plt.plot(x,y,'green')

     

    • 선스타일 변경
    plt.plot(x,y,'-.')

    plt.plot(x,y,'b^')

    여기서 b는 blue를 의미합니다. r을 넣는다면 red로 인식해 빨강색 삼각형으로 그려집니다.

    plt.plot(x,y,'m:')

    선의 두께를 변경하고 싶다면 파라미터에 linewidth를 넣어서 변경할 수 있습니다.

    plt.plot(x,y,'m:',linewidth=9)

    이밖에도 많은 파라미터가 있는데 다음 사이트에서 더 참고하시면 좋을 것 같습니다. 

    https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.plot

     

    pyplot — Matplotlib 2.0.2 documentation

    Parameters:X : array_like, shape (n, m) or (n, m, 3) or (n, m, 4) Display the image in X to current axes. X may be an array or a PIL image. If X is an array, it can have the following shapes and types: MxN – values to be mapped (float or int) MxNx3 – R

    matplotlib.org

     

    여러 그래프 한번에 출력하기

    subplot을 이용해 한번에 여러개의 그래프를 출력할 수 있습니다.

    plt.subplot(2,2,1)
    plt.plot(x,y,'r')
    plt.subplot(2,2,2)
    plt.plot(x,y,'g')
    plt.subplot(2,2,3)
    plt.plot(x,y,'b')
    plt.subplot(2,2,4)
    plt.plot(x,np.exp(x),'y')

    (2,2,1) 은 쉽게 말해서 사각형을 2x2로 등분해서 왼쪽 위에 넣는다고 받아들이면 되겠습니다. 

    순서는 코드를 보시면 쉽게 알 수 있습니다.

     

    hist

    마지막으로 hist를 설명하고 포스팅을 마칠까 합니다.

    hist는 histogram(히스토그램)의 약자로 히스토그램을 작성해주는 함수입니다.

    어떻게 만드는지는 코드를 보시면 금방 알 수 있습니다.

     

    data = np.random.randint(1,100,size=200)
    plt.hist(data,bins=20,alpha=0.3)
    plt.xlabel('numbers')
    plt.ylabel('values')
    plt.title('random data')
    plt.grid(True)

    hist의 파라미터를 보면 bins와 alpha가 있는데

    bins는 막대의 개수를 의미하고

    alpha는 투명도로 0에서 1사이의 값을 넣으면 숫자에 맞춰서 적절한 투명도가 나오게 하는 파라미터입니다.

     

    관련 포스팅

    [Python/그래프 그리기] - 파이썬 matplotlib 그래프 축 없애기

    [Python/Numpy] - ndarray 생성하기

    댓글

    Designed by JB FACTORY

    ....