Memo ≫
Gnuplot
Summary of gnuplot
Ref. [1] gnuplot homepage
Ref. [1] gnuplot homepage
Contents
test
使用しているgnuplotのバージョンにおける現在のterminalでの仕様を確認するのに「test」を使います。
で確認できます。output.epsに仕様をまとめた図が描かれます。
gnuplot> test
するとデフォルトのterminal (x11やwxtなど)での仕様が
と表示されます。出力時に使うterminal毎に確認すると良いでしょう。
例えば「postscript eps color enhanced」における出力の仕様は
gnuplot> set terminal postscript eps color enhanced
gnuplot> set output 'output.eps'
gnuplot> test
(epsにしているので、.epsに出力しています)gnuplot> set output 'output.eps'
gnuplot> test
で確認できます。output.epsに仕様をまとめた図が描かれます。
使える色
gnuplotで使える色は
gnuplot> show colornames
で確認できます。
Gnuplot中でUNIXコマンドを使う
Gnuplotを起動中にUNIXコマンドを使いたいときは、「!」の後にコメンドを書く。
例:
gnuplot> ! ls
gnuplot> ! cat filename
gnuplot> ! ls
gnuplot> ! cat filename
データを点・線・点と線でプロット
データや関数は点・線・点と線などでプロットできる。
%点でプロット
> 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
> 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
目盛
目盛の増分
x軸、y軸の目盛の増分は、それぞれ
set xtics
set ytics
で変える。
xtics 10 <- 増分10
xtics 10,20 <- 初期値10、増分20
xtics 10,20,30 <- 初期値10、増分20、終了値30
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の何乗で表示されるようになる。
とすると、x軸の数値が10の何乗で表示されるようになる。
座標軸
コマンド | 出力 |
---|---|
set zeroaxis | x軸とy軸を表示 |
set xzeroaxis | x軸を表示 |
set yzeroaxis | y軸を表示 |
データの中身を加工
四則演算
一つファイルのデータを計算して加工する
データの2列目を5倍してplotとしたいとき、
複数のファイルのデータを計算して加工する
Linuxコマンドのpasteを利用する。pasteは複数のファイルを横に並べて書き出すコマンドなので、 hoga1.datに
u 1:($2+$4)とすれば、1列目と2列目+4列目、すなわち合体する前のhoge1.datの2列目とhoge2.datの2列目を足したものについてplotされる。
データの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に
3.0 4.0
10.0 20.0
30.0 40.0
と書いたあると、pasteによって
30.0 40.0
1.0 2.0 10.0 20.0
3.0 4.0 30.0 40.0
が出来上がる。ファイルが二つ以上でも同様。
これを利用して、gnuplotで
3.0 4.0 30.0 40.0
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したいとき、
他にも、範囲を指定して、
これを使えば、下の図のようにプロットすることができる。 赤がオリジナルのデータで、ある範囲のみ負の値を取っている。上の方法を用いて負の値に3.14を足すと緑(awk1)のようになり、範囲を指定して3.14を足すと青(awk2)のようになる。この場合、当然緑(awk1)と青(awk2)の結果は一致する。
いくつかのデータ点において、ある条件を満たすもののみ加工したい場合に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が足されるようにすることもできる。これを使えば、下の図のようにプロットすることができる。 赤がオリジナルのデータで、ある範囲のみ負の値を取っている。上の方法を用いて負の値に3.14を足すと緑(awk1)のようになり、範囲を指定して3.14を足すと青(awk2)のようになる。この場合、当然緑(awk1)と青(awk2)の結果は一致する。
条件分岐
データのプロット時に条件分岐が使えます。例えば、データファイルの数値で「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)というのも可。
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解除を忘れずに)
とすると、以下のような図が出来上がる。
小さな図の位置はorigin、大きさはsizeで指定。
> 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解除を忘れずに)
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> a=1.0
gnuplot> b=2.0
gnuplot> c=3.0
gnuplot> fit f(x) 'data.dat' via a,b,c
このようにして、a,b,cを求められる。収束が悪い場合は、a,b,cの初期値を変えたり、関数系を変える必要がある。得られた関数は、
gnuplot> plot f(x), 'data.dat'
としてplotし、ちゃんとFittingできているか確かめると良い。
特殊文字・特殊記号
ギリシャ文字
set terminal時にenhancedオプションをつける。
set terminal enhanced
{/Symbol hoge}と書くと、hogeに入れたアルファベットに対応したギリシャ文字が出力される。
対応表
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}
バー: 短 {/Symbol \55} 長 {/Symbol \320}
Memo ≫
Gnuplot