gnuplot

以下の内容はたいへん古くなってしまいました。 もう gnuplot 4 が出ています。 竹野さんの gnuplot のページ (Takeno Lab) にはマニュアルの和訳などたくさんの情報がありますので,そちらを見ていただくことをお勧めします。

また、 gnuplot tips (not so Frequently Asked Questions) にとても詳しい解説があります。

Windows 版での利用については

を参照してください。

なお、このページの 参考リンク もご覧ください。

gnuplotとは?

gnuplot はオープンソースのグラフ描画プログラムです。 もともとは UNIX 上のものでしたが,Windows 版などもあります。

意外かもしれませんが,gnuplot は GNU(グニュー)プロジェクトのソフトではありません。 頭3文字が同じになったのは単なる偶然のようです。 ライセンスも GNU の GPL ではありません。 ニュープロットと読むのが正しいのでしょうが,グニュープロットと読む方が通じやすいかもしれません。 また,全部小文字で綴るのが正しいということです。 ただし英語ではセンテンスの頭では Gnuplot となり,タイトルなどでは GNUPLOT と表記することもあります。

以下は古い情報をとりあえず残しておきます。

Mac OS X で 3.8 を make

Linux でのインストール

2002年12月に出た gnuplot-3.7.3.tar.gz をインストールしてみました。

tar xvzf ...../gnuplot-3.7.3.tar.gz
cd gnuplot-3.7.3
./configure
make
make install

pdflib を入れれば ./configure --with-pdf で PDF 対応にできます。

Linux でのインストール(古)

ここでは山賀さんの gnuplot 日本語化機能拡張パッチを適用してみます。 詳しくは The Official Site of PLUS-enhanced patch for GNUPLOT*1 をご覧ください。

オリジナルの gnuplot-3.7.1.tar.gz に加え,山賀さんのパッチ gnuplot3.7.1+1.2.0.patch.tar.gz をいただいてきます。

gcc 3.1 でコンパイルしたら Segmentation fault (core dumped) になってしまったので,egcs-2.91.66 でやり直しました。

tar xvzf ..../gnuplot-3.7.1.tar.gz
cd gnuplot-3.7.1
tar xvzf ..../gnuplot3.7.1+1.2.0.patch.tar.gz
patch -p0 <gnuplot3.7+1.2.patch
touch aclocal.m4
touch configure
./configure --with-vflib --with-readline=gnu
make
make install

山賀さんの日本語版ドキュメントは gp+ ディレクトリの中にあります。

起動

単に gnuplot と打ち込めば起動します。 ここで,たとえば

plot sin(x)

などと打ち込むと,グラフが現れます。 グラフを消すには,グラフにフォーカスをあてて q です(あるいはグラフの「×」をクリック)。

help と打てば解説が読めます。

終了は quit または exit です。

データファイルの準備

データファイルはたとえば次のようにまとめておきます。 頭に # が付く行はコメントです。

# Bz       rho       Hall    Seebeck     Nernst
0.0   1.46e-06  -4.19e-06  -0.000283   0.000105
0.1   1.48e-06  -4.07e-06  -0.000287   8.56e-05
0.2   1.51e-06  -3.94e-06  -0.000293    6.2e-05

欠損値はたとえば ? で表しておき,gnuplot 側で

set missing "?"

のように設定しておきます。

プロット

第1列を x 座標,第3列と第5列を y 座標としてプロットするなら

plot 'data' using 1:3 w l, 'data' using 1:5 w l

とします。w l は with lines の略で,折れ線で結ぶ意です。 あいまいさがなければこのように略せます。 using も u だけでもかまいません。

いちいち with lines するのが面倒なら,最初に

set data style lines

と打ち込んでおきます。

線ごとの凡例を変えるには

plot 'data' using 1:3 t 'Raw' w l, 'data' using 1:5 t 'Effective' w l

のようにします(t は title)。凡例を付けないなら,あらかじめ

set nokey

と打ち込んでおきます。

キーがなくても任意の位置に任意のラベルを書き込むことができます。

set label 'Effective' at 3.9,3.2e-5 right

ここで right を付けたのは座標 (3.9, 3.2e-5) に右揃えするためです。 right がなければその点に左が揃います。 これらのラベルをご破算にするには set nolabel と打ちます。

ラベルをグラフの y 軸に付けるなら

set ylabel 'Electric Resistivity ({/Symbol W} m)'

のようにします。ここで {/Symbol W} は Ω という文字を出力するコマンドです。 また,m^{-1} とすれば m-1 となります。 ただしこれらは出力として PostScript,オプションとして enhanced を選んだときだけ有効です(後述)。

他のトリックとして,y 軸を上下逆にするには

set yrange [] reverse

とします(元に戻すのは set yrange [] noreverse)。 y 軸として第6列から2を引いた値を使い,3次スプラインで補間するには,

plot 'data' using 1:($6-2) smooth csplines w l

とします。 smooth csplines は s c でもかまいません。

出力

EPS 形式で出力するには,たとえば次のようにします。

set term post eps enh color 22
set out 'filename.eps'
replot         # 再描画
set out        # 出力先を標準出力に(つまり filename.eps を閉じる)
set term x11   # 出力形式をX11に戻す

モノクロなら color は不要です。 他の文書にインクルードするのでなければ eps も不要です。

もっとよい方法は,次のように tgif 形式で出力し,あとで tgif で修正することです。

set term tgif
set out 'filename.obj'
replot
set out
set term x11

セッションの保存

たとえば save 'filename.gnu' と打ち込めば, 設定の内容と最後のプロットコマンドが保存されます (ただしターミナルを変更する set term と 出力先を変更する set out はコメントアウトされた形になります)。 保存したファイルは load 'filename.gnu' で実行できます。

等高線

gnuplot で等高線を描くには次のようにします。 データはファイル data に, x 座標が第1カラム, y 座標が第2カラム, 高さが第4カラムに入っているとします。

set nosurface
set contour
set view 0,0
set cntrparam levels auto 10
splot 'data' using 1:2:4 w l

メッシュが 128×128 といった中途半端な値のときは, 次のような範囲指定が必要かもしれません。

set xrange [0:128]
set yrange [0:128]

また,x,y 軸の目盛がじゃまになるなら,次のようにします。

set noxtics
set noytics

上の例では等高線の水準は自動で約10程度としました。 自動で決められてしまうのが嫌なら,次のように個々に設定します。

set cntrparam levels discrete 0.0005, 0.005, 0.01, 0.015, 0.02, 0.0235

縦横比をうまく 1:1 にするには,次のように table 形式で書き出して, 再度読み込んで描画するといいでしょう。

set term table
set out 'filename'
replot
set out
set term x11
set size square     # 両軸を同じ比率に
set nokey
plot 'filename' w l

これを tgif 形式で書き出し,tgif で読み込んで修正します。

set term tgif
set out 'filename.obj'
replot
set out
set term x11

現状では長方形領域の等高線しか描けません。

フィッティング

たとえば2次関数でフィットするには次のようにします。

f(x) = a*x**2 + b*x + c
fit f(x) 'measured.dat' using 1:3 via a, b, c

最後に次のようにしてグラフを描けばフィットの良さがわかります。

plot f(x), 'measured.dat' using 1:3

他のツールとの併用

たとえばデータファイルの1列目と5列目を取り出すには,Perlで次のようにします。

perl -ane 'print "$F[0]\t$F[4]\n"' data >newdata

Perlのオプション -a はautosplitといってスペースで区切られた部分を $F[0],$F[1],……に切り出します。

複数のファイルの対応する行を結合するにはUNIXの paste コマンドが便利です。

paste data1 data2 data3 >data

参考リンク

参考書


*1 注意 このパッケージは現在メンテナンスされておりません。利用はお勧めしません。

Last-modified: 2011-11-12 (土) 15:44:26 (1660d)