9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Gnuplotで簡単にアニメーションを作る方法

Last updated at Posted at 2018-09-05

#Gnuplotで簡単にアニメーションを作る方法
条件

  1. ver4.6以上であること。
  2. terminalにgifが入っていること。

##はじめに
gnuplotで動画を作りたくなることありますよね。
ここでは動画を作る際のスクリプトを書いておきたいと思います。

gnuplotはver4.6以降からdo forという構文が使えるようになりました。これのおかげで繰り返し命令ができます。それ以前はrereadとかいう意味わからん作業をしなくちゃいけなかったので、それに比べるとだいぶ素直に書けます。

今回は実際に使っていたスクリプトを結構そのまま抜き出してきたものなので、数字とかは適宜変えてください。

##前提
データを読み込んで動画を作るような場合を考えます。動画は、画面上をある点が動き回るものを想定します。今回のデータは、その点のx座標とy座標が、ひたすら改行もなしに書かれたものだとします。

##このようなスクリプトを作ります。

anime.gnu

set terminal gif animate delay 5 optimize size 640,480
set output 'HOGE.gif'
do for [i=0: 3000] {
  plot [-3:3][-3:3] "hoge.d" every ::i::i using 1:2 w p pt 7 ps 2
}
unset output

上から順に説明していきましょう。

set terminal gif animate delay 5 optimize size 640,480

terminalをgif動画のモードにします。ついでに色々設定します。

  • animate: アニメーションのモード。
  • delay 5: ある画像を表示してから次の画像を表示するまでに、0.001×5秒静止します。ただし、実際の表示時間は表示媒体に結構依存するので、実際に表示しながら確認するといいです。
    optimize: ファイル容量を小さくする。どのように小さくするかはここを参照
  • size 640,480: 640x480のgif動画にする。あんまり大きいとサイズが重い。
do for [i=0: 3000] { 〜〜〜〜 }

こいつがこの記事の味噌です。この場合、i=0からi=3000までiを変えつつ、{}内を実行します。
gif animateterminalでは、出力順にアニメーションにしてくれるので、このループ文で絵を出力するたびにアニメーションのコマ数が増えていくわけです。

plot [-3:3][-3:3] "hoge.d" every ::i::i using 1:2 w p pt 7 lc 1 ps 2

データ"hoge.d"の i 行目だけをプロットするというコマンド。x軸は1列目、y軸は2列目の値を使う。範囲は$-3\leq x\leq3$ 、 $-3\leq y\leq3$。pt 7で丸のプロットにしてます。
描画範囲を固定しないと動画にしたときにやたら見辛くなります。

unset output

したら出力終了となります。

9
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?