GNUPLOTの使い方

このドキュメントの文責は高橋にあります。コメント大歓迎です。

[IMAGE(counter)] since Dec. 3, 2001

Last modified: Fri Jan 25 13:52:06 JST 2002

目次


はじめに

このドキュメントはもともと,筑波大学工学システム学類の1998年度の講義「システムダイナミクス」の受講者を対象に,グラフ描画ソフトGNUPLOTの使い方を説明したものです. したがってシステムダイナミクスのレポート作成に必要な最小限のことしか書いてありません. 興味を持たれた方は、これを参考にしていろいろな使い方を自分でみつけてみましょう.

下記のドキュメントでは、

を対象としています。でも、これらのバージョン固有の機能は使っていないつもりですので、きっとそこらへんにころがってるGNUPLOTでも以下の動作はすると思います。

up 目次へ down 次へ


起動・終了の仕方

kterm等の端末上で

% gnuplot
と入力するとGNUPLOTが起動します。
        G N U P L O T
        Unix version 3.5 (pre 3.6)
        patchlevel beta 340 (+1.1.4 1998/04/04)
        last modified Tue Nov 25 22:57:44 GMT 1997

        Copyright(C) 1986 - 1993, 1997
        Thomas Williams, Colin Kelley and many others

        Send comments and requests for help to info-gnuplot@dartmouth.edu
        Send bugs, suggestions and mods to bug-gnuplot@dartmouth.edu

Terminal type set to 'x11'
gnuplot> 
デフォルトでは出力端末がXになっているので、グラフはすべてXを使用して別のウインドウに出て来ます。postscript形式やTGIFのobj形式など、様々なタイプの出力端末を選んでそちらに出力することも可能です。

終了するときは、

gnuplot> quit
と入力します。

up 目次へ down 次へ


2次元のグラフを描く

ためしに y=sin(x) を描いてみましょう。
gnuplot> plot sin(x)
このように入力すると、下のようなグラフが得られます。

X軸やY軸の範囲は、適当に決めてくれます。自分で指定することもできます。別の関数を描きたければ、
 gnuplot> plot (x-1)*x*(x+1) 
等と入力します。このようにすると、グラフが書き換えられます。複数のグラフを重ねて描きたければ、
gnuplot> plot sin(x)
gnuplot> replot (x-1)*x*(x+1)
または
gnuplot> plot sin(x), (x-1)*x*(x+1)
というように入力します。

up 目次へ down 次へ


描画範囲の指定

上記の通り入力すると、下のようなグラフになります。

これじゃちょっと悲しいので、X軸とY軸の範囲を指定します。範囲指定の方法 には、二通りあります。 その一の場合、範囲指定はこのプロットにおいてのみ有効となります。その二の場合は、この範囲指定が以降のデフォルトとなります。どちらの場合も、下のグラフが得られます。

グラフを何度も描き直す場合は、一度
gnuplot> plot sin(x), (x-1)*x*(x+1)
等とやったあとは、
gnuplot> replot
で同じグラフを描き直してくれます。範囲をいろいろ変えながらプロットしてみたい時には便利でしょう。

up 目次へ down 次へ


ファイルからデータを読み込む

次は、関数を指定するのではなく、テキストファイルに書き込まれたデータをグラフにする場合です。
% cat data
# This is a comment.
# x       y1        y2
0.000000 -0.403263  0.202985
0.200000 -0.517929  0.562537
              :
29.800000  2.698706  4.412752
30.000000  1.598323  1.853904
このようなファイルが存在する場合、
gnuplot> plot "data"
と入力すると、ファイル``data''の1列目をX軸、2列目をY軸としたグラフが得られます。ファイル中で描画に使う列を指定するには、次の例のように入力します。
gnuplot> plot "data", "data" using 1:3
こうすると、二つ目の曲線(緑色)は1列目をX軸、3列目をY軸のデータとみなして描かれます(デフォルトでは下図のような点と線分による表示にはならず、点のみで描かれるはずです。詳しくは次の章を参照して下さい)。

up 目次へ down 次へ


データスタイルの指定

ファイルから読み込んだデータを表示する場合、デフォルトの描画スタイルは点を使ったものになります()。これを変更したければ、
gnuplot> plot "data" with lines, "data" using 1:3 with points 
のように入力します。すると、下図のような出力が得られます。ところで、GNUPLOTのコマンドは、区別がつく限り後ろの文字を省略してもかまわないので、上記は
gnuplot> p "data" w l, "data" u 1:3 w p 
としてもかまいません。

デフォルトのスタイルを変更したい場合は、
gnuplot> set data style lines 
と入力すると、以降スタイル指定なしのグラフは ``with lines'' で描かれます。どんなスタイルが使えるかは、
gnuplot> help style
または
gnuplot> help set style
として調べて見て下さい(ヘルプの使い方も参照のこと)。

(注) GNUPLOTは起動時に $HOME/.gnuplot を探し、みつかればその内容を読み込んで環境を初期化します。高橋の $HOME/.gnuplot には

set data style linesp
と書いてあり、そのことをすっかり忘れていたので、ファイルからデータを読み込むの図は``linesp''で描かれてしまっているのでした。しかもサンプルデータが見つからんので作り直すこともでけへん...

up 目次へ down 次へ


3次元のグラフを描く

3次元のグラフを描くには、``splot''を使います。

3次元のグラフの場合、見やすくするために視点を変えて描画させる必要もでてくるでしょう。視点を変える方法については、``view''コマンドのヘルプを参照して下さい。

up 目次へ down 次へ


ファイルへの出力

GNUPLOTでは、Xを使って画面にグラフを描画する以外に、様々な形式の出力端末を選択してファイルとして出力させることも可能です。出力端末を変更するには、``set terminal''コマンドを使います。

gnuplot> set terminal
このように入力すると、使える出力端末の一覧が表示されます。画面に表示されているグラフをpostscript形式でファイル``out.ps''に出力させる場合には、次のようにします。
gnuplot> set terminal postscript
Terminal type set to 'postscript'
Options are 'landscape noenhanced monochrome dashed defaultplex "Helvetica" 14'
gnuplot> set output "out.ps"
gnuplot> replot
こうすると、カレントディレクトリに``out.ps''が作られます。postscriptのファイルですから、ghostview等のビューアで確認したり、postscriptプリンタで印刷することができます。

出力端末をXに戻すには、次のように入力します。

gnuplot> set output
gnuplot> set terminal x11
これで、以降のグラフは再び画面に描画されるようになります。

up 目次へ down 次へ


ヘルプの使い方

GNUPLOTにはここで説明した以外にも様々なコマンドが備わっています。「??っていうコマンドの使い方がわからへん」、あるいは「こんなグラフが描きたいねん」というときは、ヘルプを調べてみると良いでしょう。

例えば``plot''の使い方を知りたい時は、

gnuplot> help plot
と入力すると、ヘルプが画面にあらわれます。ヘルプの画面は、less等のページャと同様の操作でスクロールさせることができます()。参照したヘルプにサブトピックがある場合、ヘルプの最後にその一覧が出て来ます。例えば上の例では、最後までスクロールすると下のようになります。
Subtopics available for plot:
      acsplines      bezier         binary         csplines
         :             :              :               :
      using          with
(END)
ここで `q'を押すと、最後の行が
Subtopic of plot: 
と変わります。上の選択肢から選んで入力すればそのヘルプへ移り、何も入力せずにリターンを押すとヘルプを終了して元の画面に戻ります。

(注) ってゆ〜か〜(^^;、GNUPLOTがlessを呼んでいるようです。` / 'を使って文字を検索することもできました。また、環境変数 PAGER が設定されていれば、それに従うようです。

up 目次へ