gnuplotメモ

他人の読むことを想定していない自分用メモ.

データファイルの扱い

gnuplotに食べさせるデータは改行2つでデータセットの区切り,改行1つでその中でのブロックの区切りを表す.

plot "dat" index 2 every :::5::5 using 1:2 notitle w lp

でファイル"dat"の3番目*1のデータセットのうちの6番目のブロックをプロットできる.
そういう構造のないデータファイルなら気にしなくていいけど.

index 1:7:3とか書くと1から7までのデータが3つおき,つまり(1,4,7)のプロットがされる.
everyは

every 行増分:ブロック増分:開始行:開始ブロック:終了行:終了ブロック

という書式,ただし最後は数値(整数)で終わらなければならない(いらないコロンは省略).

usingの番号は x軸:y軸 となっているが ( ) でくくってやるといろいろ演算できたりする:

plot "" using ($1**2):($2 * $3)

と書けば1列目の2乗*2に対して2行目と2行目の積をプロットできる.ちなみに直前に使ったファイルはこんな感じで""で指定できたりする.他にも色々省略できたりする.plotというコマンドもpだけでちゃんと解釈してくれたり,with linespointsはw lpとかけたり.

range

set yrange [-5:5]
とかを解除したいときはset yrange [*:*]とする.

logでプロットする時は
set logscale xy
とか.

出力

set terminal x11
set terminal postscript eps
set output "foo.eps"
set terminal epslatex
set output "fool.tex"

上から普通のx11出力,eps出力,LaTeX用出力(文字列がLaTeX形式で出力される).
最後のやつではlatex文書中で\input{foo.tex}などとすることになる.ただしソースとinputしようとするファイルが別ディレクトリ,例えばfigureというサブディレクトリの場合はfoo.tex中でfoo.epsを指定している部分を

\put(0,0){\includegraphics{foo}}%

\put(0,0){\includegraphics{figure/foo}}%

としないとエラーになるというバグ的ななにかが.

*1:行とブロックの番号を0から数える

*2:'**'がべき乗