アニメーション
作成者:上道 賢太
gnuplotではループ機能を使うことができるので,少しずつ動かしながら表示してアニメーションを作ることができます.
また,グラフをPNG形式などで出力することができるので,
連番でグラフを出力し,繋げてぱらぱら漫画の要領でアニメーションにすることもできます.
・ループによる描画
if (exist("i") == 0 || i < 0) i = 0 #もしiが定義されていない,もしくはi<0の時,i=0と定義 set title "animation" #titleの設定 time = sprintf("t=%d",i) #ステップ数をtimeと定義 set label time at 7,0.7 #timeで定義したものを7,0.7の座標に表示 plot sin(x-i) #グラフプロット i = i + 1 #カウントアップ pause 0.1 #停止時間の調整 reset #setしたものをリセット if(i <= 100) reread #100まで繰り返す i = -1 #終了後iを-1にする |
$gnuplot > load "sin.txt" |
・連番のPNG画像を作る
次は,PNG形式で出力してぱらぱら漫画を作ります.できたPNG画像はフリーソフトなどで繋げてアニメーションにします.
if (exist("i") == 0 || i < 0) i = 0 #もしiが定義されていない,もしくはi<0の時,i=0と定義   set title "animation" #titleの設定   time = sprintf("t=%d",i) #ステップ数をtimeと定義   set label time at 7,0.7 #timeで定義したものを7,0.7の座標に表示   set term png #terminalをpngに設定   filename = sprintf("./ani%03d.png",i) #filenameの設定(001.png,002.png,・・・と出力)   set output filename #出力   plot sin(x-i) #グラフプロット   set output #必要ないかも   i = i + 1 #カウントアップ   pause 0.01 #停止時間   reset #setしたものをリセット if(i <= 100) reread #100まで繰り返す i = -1 #終了後iを-1にする |
・連番の画像をアニメーションにする
Windowsを使用している場合はgiamという便利なソフトがあります.また,コマンドラインで行なう場合にはmencoderが便利です.
$mencoder "mf://./*.png" -mf fps=40 -ovc lavc -lavcopts vcodec=mpeg4 -o ./movie.avi |