Julia에서 그래프 GIF 애니메이션을 만들어 보았습니다.

13053 단어 Juliagif


환경


  • MacOS Mojave
  • Julia version 1.0.3
  • Plots v0.23.0

  • Julia 설치 절차는 이전 기사를 참조하십시오.

    절차



    아래의 3 단계로 진행합니다.

    1. Animation 객체 초기화


    using Plots
    anim = Animation()
    

    2. 프레임 저장


    for i=1:100
        plt = plot(...)
        frame(anim, plt)
    end
    

    3. 프레임에서 애니메이션으로 변환(gif, mp4 등)


    gif(anim, "test.gif", fps = 30)
    

    참조 소스 : htps : // / cs. 쥬아아 pぉts. 오 rg / 아 st / 아니 마치온 s /

    실례



    복소함수 $w = z^3$를 그려봅시다.

    $$
    z = x + iy
    $$

    $$
    z^3 = (x^3-3xy^2) + i(3x^2y-y^3)
    $$

    $u(x,y)$를 실부, $v(x,y)$를 허부로 하면,

    $$
    u(x,y) = x^3-3xy^2
    $$

    $$
    v(x,y) = 3x^2y-y^3
    $$

    y를 움직일 때의 곡선을 다른 x마다 그래프를 그려 애니메이션으로 표시합니다.
    #パッケージのインポート
    using Plots
    gr()
    
    #uとvの定義
    function u(x,y)
        return x^3 - 3*x*y^2
    end
    
    function v(x,y)
        return 3*y*x^2 - y^3
    end
    
    #yの範囲設定
    y = [i*0.1 for i in -100:100]
    
    #アニメーションのインスタンス生成
    anim = Animation()
    
    #xを-10から10まで0.5刻みで動かしてグラフを描き、フレーム画像として保存
    for x0=-20:20
        x = x0*0.5
        u_result = map(u,[x for i in 1:length(y)],y)
        v_result = map(v,[x for i in 1:length(y)],y)
        plt = plot(u_result,v_result,label="x=$x",
                    xlims=(-1000, 1000), ylims=(-500, 500),
                    xlabel="u",ylabel="v")
        frame(anim, plt)
    end
    
    #gifに変換
    gif(anim, "test.gif", fps = 5)
    



    간단하네요.

    Jupyter에서도 움직이는 것이 편리.

    덧붙여서 겹쳐쓰면 다음과 같이 됩니다.
    y = [i*0.1 for i in -100:100]
    
    for x0=-20:20
        x = x0*0.5
        u_result = map(u,[x for i in 1:length(y)],y)
        v_result = map(v,[x for i in 1:length(y)],y)
        if x0==-20
                plot(u_result,v_result,label="x=$x",
                    xlims=(-1000, 1000), ylims=(-500, 500),
                    xlabel="u",ylabel="v")
        else
            plot!(u_result,v_result,label="x=$x",
                    xlims=(-1000, 1000), ylims=(-500, 500),
                    xlabel="u",ylabel="v")
        end
    end
    plot!(legend=:none)
    savefig("test.png")
    



    매크로를 사용하는 방법


    @animate 이나 @gif 라는 매크로를 사용한 방법도 있다고 합니다.

    참조 소스 : htps : // / cs. 쥬아아 pぉts. 오 rg / 아 st / 아니 마치온 s /
    anim = @animate for i=1:100
        plot(...)
    end
    gif(anim, "/tmp/anim_fps15.gif", fps = 15)
    
    @gif for i=1:100
        plot(...)
    end every 10
    

    시도하지 않지만 우선 메모.

    참고로 한 페이지


  • Plots - Animations
  • Julia 언어와 Plots + GR로 복소 함수 gif 애니메이션 만들기
  • Julia의 애니메이션 작동 방식
  • 좋은 웹페이지 즐겨찾기