Julia에서 그래프 GIF 애니메이션을 만들어 보았습니다.
환경
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
시도하지 않지만 우선 메모.
참고로 한 페이지
using Plots
anim = Animation()
for i=1:100
plt = plot(...)
frame(anim, plt)
end
gif(anim, "test.gif", fps = 30)
복소함수 $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
시도하지 않지만 우선 메모.
참고로 한 페이지
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
Reference
이 문제에 관하여(Julia에서 그래프 GIF 애니메이션을 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/MTNakata/items/0418ae3493a26ac44603텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)