つれづれなる備忘録

日々の発見をあるがままに綴る

gnuplotによるグラフ作成29~アニメーションの作成

 今回は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 1gifアニメーションのコマ送り間隔を指定し、数値が大きいほどコマ送りが遅くなる。次に出力する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次元プロットの回転表示アニメーションを下に示す。

3次元プロットの回転表示

4. まとめ

 今回はgnuplotを用いてプロットのアニメーションとgifアニメーションファイルへ出力する方法について紹介した。