gnuplotのコマンドまとめ(ループとかeveryとか)

gnuplotスクリプトを書いてたら、忘れてるのが一杯あって(主にループとeveryの構文)過去のスクリプトをあさったりしたので、まとめてみた。

gnuplotのループ文。

ループのための下準備

繰り返し構文以外に、以下のようなコマンドを使います

hoge = system("/bin/ls hoge*") lsした結果をhogeの変数の中に代入. (要するにsystemでshellコマンドの結果を受けとれる)
sprintf("%s_%d", string, 10) formatを設定した文字列を作成する。
hoge = string1 . string2 string1とstring2の文字列を連結

この3つを組み合わせてdo for文や、plot for文を使うと楽できまっせ!!!

plot for文
plot for [i=1:10] spritf("hoge%02d", i) t spritf("hoge%02d", i)

とやると、hoge01, hoge02,...hoge10をすべてplotしてくれます。

do for 文
dirnames = system("/bin/ls -d hoge*")
do for [dir in dirnames] {
  file = dir . "/dat"
  p file t file
  }

とかすると、hoge*/datにマッチするファイルを順番にプロットしてくれるよ!!
大量に画像化するときや、簡易animationを作るときに便利だね!!

ちなみにdo for文はgnuplot4.6からしか、使えないので注意!!



every 文

     every 行刻み:ブロック刻み:初期行:初期ブロック:終了行:終了ブロック
行刻み 何行ごとに読みこむか(デフォルト値=1, すべて読み込む)
ブロック刻み 何ブロックごとに読みこむか(デフォルト値=1, すべて読み込む)
初期行 何行目から始めるか
初期ブロック 何ブロック目から始めるか
終了行 何行目で終わるか
終了ブロック 何ブロック目で終わるか
plot for [i=0:10] 'hoge' every :::i::i

とすれば、各ブロックごとにプロットできるぞ!

ちなみに、gnuplotではブロックは、空白行があるとこまでを1ブロックとして認識するぞ!!