Memo ≫ Gnuplot

Memo Gnuplot
Summary of gnuplot
Ref. [1] gnuplot homepage

Contents

test

使用しているgnuplotのバージョンにおける現在のterminalでの仕様を確認するのに「test」を使います。
gnuplot> test
するとデフォルトのterminal (x11やwxtなど)での仕様が
test_x11
と表示されます。出力時に使うterminal毎に確認すると良いでしょう。 例えば「postscript eps color enhanced」における出力の仕様は
gnuplot> set terminal postscript eps color enhanced
gnuplot> set output 'output.eps'
gnuplot> test
(epsにしているので、.epsに出力しています)
で確認できます。output.epsに仕様をまとめた図が描かれます。
test_eps
Back to Top

使える色

gnuplotで使える色は
gnuplot> show colornames
で確認できます。
Back to Top

Gnuplot中でUNIXコマンドを使う

Gnuplotを起動中にUNIXコマンドを使いたいときは、「!」の後にコメンドを書く。
例:
gnuplot> ! ls
gnuplot> ! cat filename
Back to Top

データを点・線・点と線でプロット

データや関数は点・線・点と線などでプロットできる。
%点でプロット
> plot 'hogehoge.dat' with point (または points)
> plot 'hogehoge.dat' w p
%線でプロット
> plot 'hogehoge.dat' with line (または lines)
> plot 'hogehoge.dat' w l
%点と線でプロット
> plot 'hogehoge.dat' with linespoints
> plot 'hogehoge.dat' w lp
Back to Top

目盛

目盛の増分

x軸、y軸の目盛の増分は、それぞれ
set xtics
set ytics
で変える。
xtics 10 <- 増分10
xtics 10,20 <- 初期値10、増分20
xtics 10,20,30 <- 初期値10、増分20、終了値30

数値の指数表示

set format x "10^{%L}"
とすると、x軸の数値が10の何乗で表示されるようになる。
Back to Top

座標軸

コマンド 出力
set zeroaxis x軸とy軸を表示
set xzeroaxis x軸を表示
set yzeroaxis y軸を表示
座標軸を非表示にする場合は、setをunsetにする(例 unset zeroaxis)。resetを使えばすべて消える。
Back to Top

データの中身を加工

四則演算

一つファイルのデータを計算して加工する
データの2列目を5倍してplotとしたいとき、
plot 'hogehoge.dat' u 1:($2*5)
とすれば良い。3分の1にしたいときは($2/3)、√2倍したいときは($2*sqrt(2))、πを加えたいときは($2+pi)。

複数のファイルのデータを計算して加工する
Linuxコマンドのpasteを利用する。pasteは複数のファイルを横に並べて書き出すコマンドなので、 hoga1.datに
1.0 2.0
3.0 4.0
hoge2.datに
10.0 20.0
30.0 40.0
と書いたあると、pasteによって
1.0 2.0 10.0 20.0
3.0 4.0 30.0 40.0
が出来上がる。ファイルが二つ以上でも同様。 これを利用して、gnuplotで
gnuplot> plot '< paste hoge1.dat hoge2.dat' u 1:4
とすると、合体したファイルの1列目(1.0の列)と4列目(20.0の列)についてplotする。
u 1:($2+$4)とすれば、1列目と2列目+4列目、すなわち合体する前のhoge1.datの2列目とhoge2.datの2列目を足したものについてplotされる。

データの一部を加工

awkを使う
いくつかのデータ点において、ある条件を満たすもののみ加工したい場合にawkが使える。 例えば、ゼロより小さい値を+piしたいとき、
plot "<awk '{print $1, ($2<=0.0) ? $2+3.14 : $2}' plot.dat"
とすると、plot.datの1列目と2列目のデータをプロットする際に、2列目のデータの値でゼロ以下のものには3.14が足される。 ()内に条件を書いて、その後に行う操作の内容を書く。
他にも、範囲を指定して、
plot "<awk '{print $1, ($1>=0 && $1<=11) ? $2+3.14 : $2}' plot.dat"
とすれば、1列目のデータ範囲(0 ≤ $1 ≤ 11)に対応する$2の値に3.14が足されるようにすることもできる。
これを使えば、下の図のようにプロットすることができる。
delta.png
がオリジナルのデータで、ある範囲のみ負の値を取っている。上の方法を用いて負の値に3.14を足すと緑(awk1)のようになり、範囲を指定して3.14を足すと青(awk2)のようになる。この場合、当然緑(awk1)青(awk2)の結果は一致する。
Back to Top

条件分岐

データのプロット時に条件分岐が使えます。例えば、データファイルの数値で「0より大きいもの」だけ出力したい場合は
gnuplot> plot 'hogehoge.dat' u 1:($2>0.0? $2 : 1/0)
とします。条件は「$2>0.0? = $2の数値が0.0より大きいか?」で真ならば「$2 = u 1:2としてプロット」、 偽ならば「1/0 = 1割るゼロなので出力不可」となり、最終的に「0より大きいもの」だけが出力されます。条件や真偽の内容を変えれば色々応用できます。($2>0.0? $2 : $3)というのも可。
Back to Top

multiplot

グラフの中に小さなグラフをプロットするときにはmultiplotを使う。元のグラフとその一部分を拡大したものを併せて載せるときに便利。まず、multiplot modeを起動し、元のグラフをプロット。その後、拡大したい部分を指定してプロットする。
> set multiplot           (multiplot modeを起動)
> set origin 0.0,0.0    (まず元のグラフをプロット)
> plot [:5]'data.dat' u 1:2 ti 'red','data.dat' u 1:3 ti 'green'
> set origin 0.4, 0.1   (ここからが小さなグラフ用。原点を指定)
> set size 0.5,0.5       (当然サイズは小さくする)
> plot [0:1][-10:0]'./potepi.dat' u 1:2 noti,'./potepi.dat' u 1:3 noti    (拡大したい範囲を指定)
> unset multiplot       (multiplot mode解除を忘れずに)
とすると、以下のような図が出来上がる。
multiplot.png
小さな図の位置はorigin、大きさはsizeで指定。
Back to Top

Fitting

Gnuplotでは、データ点を最小二乗法を用いてFittingする機能がある。まず、適当な関数f(x)、例えばf(x)=a*x^b+cと定義する。この時、a,b,cに適当な初期値を与えておく:
gnuplot> f(x)=a*x^2+b
gnuplot> a=1.0
gnuplot> b=2.0
gnuplot> c=3.0
データが入っているファイルをdata.datとしたとき、Fittingは以下の様に行う。
gnuplot> fit f(x) 'data.dat' via a,b,c 
このようにして、a,b,cを求められる。収束が悪い場合は、a,b,cの初期値を変えたり、関数系を変える必要がある。得られた関数は、
gnuplot> plot f(x), 'data.dat'
としてplotし、ちゃんとFittingできているか確かめると良い。
Back to Top

特殊文字・特殊記号

ギリシャ文字

set terminal時にenhancedオプションをつける。
set terminal enhanced
{/Symbol hoge}と書くと、hogeに入れたアルファベットに対応したギリシャ文字が出力される。
対応表
大文字 小文字 大文字 小文字
Α A α a Ν N ν n
Β B β b Ο O ο o
Χ C χ c Π P π p
Δ D δ d Θ Q θ q
Ε E ε e Ρ R ρ r
Φ F φ f Σ S σ s
Γ G γ g Τ T τ t
Η H η h Υ U υ u
Ι I ι i Ω W ω w
Κ K κ k Ξ X ξ x
Λ L λ l Ψ Y ψ y
Μ M μ m Ζ Z ζ z

特殊記号

こちらを参照。 例えば、′(prime)は{/Symbol \242}
バー: 短 {/Symbol \55} 長 {/Symbol \320}
Back to Top
Memo Gnuplot