今回はgnuplotを用いてプロットのアニメーションを作成する方法について紹介する。
1. ターミナル上でのプロットのアニメーション
まず、gnuplotのウィンドウターミナル上でプロットを動かす方法について紹介する。do for
コマンドを使ってgnuplotを連続的に実行させることができる。
do for
コマンドを用いてi
をひとつづつ変えるのに従って、プロットの位置が動くようにする。
do for [i=1:50]{ t=0.2*i plot exp(-(x-t)**2) }
上記を実行すると exp(-(x-t)**2)
に従ってパルスのピークが移動するアニメーションがgnuplotのターミナル上で確認できる。
2. gifアニメーションの作成
プロットの出力先をgnuplotのターミナルからgifに変更する。gifアニメーションのファイルを出力するにはset term gif animate
とする。さらにdelay 1
はgifアニメーションのコマ送り間隔を指定し、数値が大きいほどコマ送りが遅くなる。次に出力するgifのファイル名はset output "ファイル名.gif"
とする。その後にdo for
コマンドを用いてプロットのアニメーションを設定し、最後にset output
とするとgifアニメーションの出力が実行され、gifファイルのフレーム数が出力される。なおプロットの出力はgifファイルとなっているので、プロットの様子が出力したファイルを開いて確認する必要がある。
set terminal gif animate delay 1 >Terminal type is now 'gif' >Options are 'nocrop enhanced size 640,480 font "arial,12.0" ' set output "pulse_test.gif" do for [i=1:50]{ t=0.2*i plot exp(-(x-t)**2) } set output >51 frames in animation sequence
パルスのピークが移動するアニメーションをgifアニメーションにした結果は以下のようになる。
3. 3次元プロットのアニメーション
2次元プロットと同様に3次元プロットについてもアニメーションを作成することができる。今回は3次元プロットの視点を移動するアニメーションを作成する。
最初に3次元プロットをsplotを用いてプロットする。gifファイルへの出力は上と同様で、do for
内でset view
の角度が変動するようにして、replot
とすることで視点の角度が連続的に変化するアニメーションが得られる。
splot x**3+y**3 with pm3d set terminal gif animate delay 1 set output "surf_rotate.gif" do for [j=0:30]{ set view 60,12*j replot } set output >31 frames in animation sequence
上のコマンドにより作成された3次元プロットの回転表示アニメーションを下に示す。
4. まとめ
今回はgnuplotを用いてプロットのアニメーションとgifアニメーションファイルへ出力する方法について紹介した。