[sympy] 파이썬으로 함수 그래프 그리기

반응형
    반응형

    sympy를 이용해 그래프 그리는 방법입니다.
    데이터의 값에 따른 그래프를 그리는 게 아니라 함수식 자체를 그리려고 한다면 sympy를 사용하면 그릴 수 있습니다.sympy의 내장으로 가지고 있는 plot 함수를 이용하면 됩니다.

    편의를 위해 sympy를 sy로 줄이고 sympy의 나머지 함수를 모두 불러옵니다.

    from sympy import *
    import sympy as sy

     

    함수 그래프 그리기

    함수 1개

    $x^2$ 를 그려보겠습니다.

    x = sy.symbols('x')
    fx = x^2
    plot(fx)

    함수 여러개

    두 가지 함수를 동시에 그려보겠습니다.
    plot 안에 넣어서 한꺼번에 그릴 수 있는데 색깔이 같게 나오는 문제가 생깁니다.

    plot(fx,x**3)

    색깔을 바꾸려면 line_color를 넣어주면 됩니다.
    sympy의 plot은 matplotlib와 달라서 그리려는 그래프 하나하나 모두 설정을 해줘야합니다.
    선만 바꿔보겠습니다.

    p1=plot(fx,line_color='g',show=False)
    p2=plot(x**3, line_color='r',show=False)
    p1.append(p2[0])   #p2와 합치기
    p1.show()

    p2[0]을 보면 알겠지만 0번째는 $x**3$을 의미합니다.
    이게 무슨 뜻인지 한꺼번에 식을 넣어서 선의 색깔을 변경해보겠습니다.

    p1=plot(fx,x**3,show=False)
    p1[0].line_color = 'r'
    p1.show()

    이것으로 식마다 인덱스를 매기고 있다는 것을 알 수 있습니다.

    범위 정하기

    x축이나 y축이나 범위를 정할 수 있습니다.
    범위는 정한 심볼로 정할수도 있고 xlim,ylim으로도 할 수 있습니다.

    plot(fx,(x,-5,5))

    plot(fx,xlim=(-5,5),ylim=(0,25))

    삼각함수 그리기

    삼각함수도 그릴 수 있습니다.
    삼각함수는 (x,y) 좌표를 정해주어야만 실행됩니다.
    원 그래프부터 그려보겠습니다.

    plot_parametric((cos(x),sin(x)),(x,-5,5))

    삼각함수를 그릴려면 (x,sin(x))로 표현해야합니다.

    plot_parametric((x,sin(x)))

    x,y좌표를 바꾸면 축 자체가 바뀝니다.

    plot_parametric((sin(x),x))

    삼각함수도 여러개라도 같은 그래프에 그릴 수 있습니다.
    방식은 위에서 언급한 방식과 비슷합니다.

    ex1 = (x,cos(2*pi*x)/2)
    ex2 = (x,sin(2*pi*x)/2)
    p =plot_parametric(ex1,ex2,(x,0,1),line_color='red')

    색깔을 바꾸고 싶으면 인덱스로 식 지정해 바꿔줍니다.

    p[0].line_color='b'
    p.show()

    3차원 그래프 그리기

    3차원 그래프도 그릴 수 있습니다. 이때는 변수가 2개여야 하겠죠? 변수를 두개로 정한후 plot3d로 그려내면 됩니다.

    from sympy.plotting import plot3d
    x,y = sy.symbols('x y')
    plot3d(x*y**2,(x,-5,5),(y,-5,5))

    여러식을 넣는 법도 위에서 언급한 방법과 유사해서 생략하겠습니다.

    마지막으로 3d를 그리면 보통 면적으로 나오는데 이를 선으로 그려내려면
    plot3d_parametric_line을 사용해 구현합니다.

    from sympy.plotting import plot3d_parametric_line
    plot3d_parametric_line(cos(x), sin(x), x, (x, -5, 5))

    마치며

    그래프를 그리는 방법이 세세하게 들어가면 여러가지가 있는데 한 포스팅에 다 넣기는 너무 힘들 것 같습니다. 그래서 가이드 사이트를 링크해놓을테니 자세한 내용은 sympy 가이드 사이트에서 확인하시기 바랍니다.

     

    관련 포스팅
    [Sympy] 파이썬으로 수학식 만들기(기초연산)
    [Sympy] 파이썬으로 미분하기
    [미적분] 파이썬으로 적분하기(Integration)

    댓글

    Designed by JB FACTORY

    ....