* gnuplot [#nc6067f8]

以下の内容はたいへん古くなってしまいました。
もう gnuplot 4 が出ています。
竹野さんの
[[gnuplot のページ (Takeno Lab):http://takeno.iee.niit.ac.jp/%7Efoo/gp-jman/gp-jman.html]]
にはマニュアルの和訳などたくさんの情報がありますので,そちらを見ていただくことをお勧めします。

また、
[[gnuplot tips (not so Frequently Asked Questions):http://t16web.lanl.gov/Kawano/gnuplot/index.html]]
にとても詳しい解説があります。

Windows 版での利用については
-堀田耕作先生 (愛知教育大・数学) の
[[gnuplot 4.0.0 のページ:http://www.khotta.org/ghost/gnuplot.html]] /
[[ミラーサイトのページ:http://khotta.digiweb.jp/ghost/gnuplot.html]]
-米澤 進吾 さん (京都大学・固体量子物性研究室) の [[gnuplotスクリプトの解説 - 米澤進吾 ホームページ:http://www.ss.scphys.kyoto-u.ac.jp/person/yonezawa/contents/program/gnuplot/]]

を参照してください。

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

** gnuplotとは? [#d14a0773]

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

-[[gnuplot homepage:http://gnuplot.info/]]
www.gnuplot.org ドメインが乗っ取られた
([[www.gnuplot.org down:http://www.usf.uni-osnabrueck.de/~breiter/tools/gnuplot/website_down_november2001.txt]])
ので [[gnuplot.info:http://gnuplot.info/]] に移行
(現在 gnuplot.org は使われていません)
-[[gnuplot homepage:http://www.gnuplot.vt.edu/]] at vt.edu
-[[gnuplot homepage:http://www.ucc.ie/gnuplot/]] at ucc.ie
-[[SourceForge: gnuplot:http://sourceforge.net/projects/gnuplot/]]

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

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

** Mac OS X で 3.8 を make [#xc430393]

-no-cpp-precomp を付けたら OK。

** Linux でのインストール [#odc5ba78]

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:http://www.pdflib.com/]]
を入れれば ./configure --with-pdf で PDF 対応にできます。

** Linux でのインストール(古) [#j82113c6]

ここでは山賀さんの gnuplot 日本語化機能拡張パッチを適用してみます。
詳しくは
[[The Official Site of PLUS-enhanced patch for GNUPLOT:http://www.yama-ga.com/gnuplot/]]((注意 このパッケージは現在メンテナンスされておりません。利用はお勧めしません。))
をご覧ください。

オリジナルの 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+ ディレクトリの中にあります。

** 起動 [#n5fc3986]

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

 plot sin(x)

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

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

終了は quit または exit です。

** データファイルの準備 [#v9de6333]

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

 # 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 "?"

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

** プロット [#m2fbf380]

第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 でもかまいません。

** 出力 [#z59fb119]

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

** セッションの保存 [#s3999948]

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

** 等高線 [#m0268960]

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

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

** フィッティング [#u2a4ae94]

たとえば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

** 他のツールとの併用 [#i8025dba]

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

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

Perlのオプション -a
はautosplitといってスペースで区切られた部分を $F[0],$F[1],……に切り出します。
-n は行ごとにループ(ただし自動プリントしない),
-e はスクリプトをコマンドラインで与えることを意味すします。
これらオプションの詳細は man perlrun で調べられます。

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

 paste data1 data2 data3 >data

** 参考リンク [#z82711a6]

-[[gnuplot tips:http://t16web.lanl.gov/Kawano/gnuplot/]]
-[[gnuplot の第一歩:http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/gnuplot-intro/]]
-[[グラフは gnuplot にお任せ:http://ayapin.film.s.dendai.ac.jp/~matuda/Gnuplot/gnuplot.html]]
//-[[ぐぬぬーぷろっと:http://twitter.com/#!/cormojs/status/134730749734699010]]


** 参考書 [#f1ab095a]

-松田七美男『Linux 活用術』(東京電機大学出版局,1998年,ISBN4-501-52900-8,1900円+税)の第5章
-矢吹道郎(監修)、大竹敢『使いこなす gnuplot』(テクノプレス、2002年、ISBN4-924998-38-9、2500円+税)[[Amazon へのリンク:http://www.amazon.co.jp/exec/obidos/ASIN/4924998699/qid=1099501189/ref=sr_8_xs_ap_i1_xgl/249-8220965-7562707]]