update 2001/9/11

BACK: UP: NEXT: ENGLISH:

--- gnuplot 入門 (基本編)---

gnuplotは多くのプラットフォーム(OS)に移植されていますので,使い方 の詳細はプラットフォームによって少々変わってきます.ここでは,UNIXの X11からgnuplotを使う方法を説明しますが,他のOSで使う場合も基本的な部分 は変わらないはずです.

まずコマンドラインからgnuplotを起動します.クレジットが表示された 後,"gnuplot> " というプロンプトが表示されます.これがgnuplot のコマンドラインで,ここにコマンドを対話的に入力しながら作業を進めます.

% gnuplot

        G N U P L O T
        Linux version 3.7
        patchlevel 0
        last modified Thu Jan 14 19:34:53 BST 1999

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

        Type `help` to access the on-line reference manual
        The gnuplot FAQ is available from
                

        Send comments and requests for help to 
        Send bugs, suggestions and mods to 


Terminal type set to 'x11'
gnuplot> 

"gnuplot> " のプロンプトで使えるコマンドには,大きく分けて

等があります.本当は非常に多くのコマンドが使えるのですが,全てを網羅的 に説明するのは不可能です.gnuplotにはオンラインヘルプが付いていますの で,詳細は help コマンドで調べてください.ここでは簡単な例を 使って,通常の作業の流れを概説します.



終了,ファイル読み込み,保存のためのコマンド

gnuplotは exit quit コマンドで終了します. 終了すると,それまでの作業内容は全て失われます.これを保存するには save コマンドを用います.saveコマンドに続けて保存するファイ ル名をシングルクォートもしくはダブルクォートで囲って与えます.ファ イル名は何を指定してもかまいませんが,存在するファイル名を指定すると上 書きされます.「上書きしても良いですか?」などという親切なダイアログは 出ません.

gnuplot> save "savefile.plt"

保存したファイルは通常のテキストファイ ルなので,エディタを使って内容を修正できます.このファイルを使って,再度gnuplotを 実行するには,gnuplotのコマンドラインで load "savefile.plt" とするか, gnuplot起動時にコマンドラインオプションとしてこのファイル名を与えます.この 場合は引用符は不要です.

gnuplotの中で

gnuplot> load "savefile.plt"

shellのコマンドラインから

 % gnuplot savefile.plt

loadでファイルを読み込む方法と起動時のオプションでの読み込みでは, gnuplotの動作が異なります.loadコマンドを使う方法では,ファイルを読 み込んだ後は gnuplot> のプロンプトが出され,通常の対話モー ドとなります.起動時のオプションで与える方法では,ファイルを最後ま で読み込んでコマンドを実行した後,gnuplotは終了します.つまりこの方 法では,gnuplotはバッチモードで動 くわけです.このバッチモードでは,画面に図を表示するのではなく,例 えばPostScriptファイルを一気に作成してしまう場合などに便利です.



プロット実行の為のコマンド

プロットを実行するコマンドは2つです.2次元プロットでは plot ,3次元プロットでは splot を使います.gnuplotが表示する ものは,関数かファイルに書かれた数値データです.関数をプロットするには, plotコマンドに続いて,Xの範囲(3次元なら XとYの範囲)と関数を与えます. 範囲を省略しても構いません.gnuplot解説書の定番であるy=sin(x)を表示してみましょう. plotコマンドに続けて sin(x) をコマンドラインから与えます.

gnuplot> plot sin(x)
basic1

これがgnuplotが表示する2次元グラフです.枠の線は太い実線で描かれま す.これはborderと呼ばれます.凡例は右上に表示されます.gnuplotでは凡 例をkeyと呼びます.XとY軸には目盛(tics)が描かれ,目盛のある位置に数値 が記入されます.この目盛はmajor ticsと呼ばれる大目盛で,各区間を小さな 目盛でさらに分割することができます.この小目盛はminor ticsと呼ばれます. 上の図では描かれていませんが,軸に名前を入れることができます.X軸の名 前はxlabelと呼ばれ,X軸の中央下に表示されます.Y軸の名前はylabelですが, この表示位置はgnuplotが図を表示している端末に依存します.ylabelは 90°回転した状態でY軸の左横に来るのが普通ですが,端末によっては文字の 回転が出来ないからです.その場合は,ylabelはY軸の上に書かれます.

表示範囲を指定しないとき,gnuplotは適当にXやYの範囲をスケーリング してくれます.上の例のように,Xの範囲を何も与えないなら -10 から +10の 範囲が選ばれ,Yの範囲は,このX区間でY座標がグラフからはみ出さない様に 自動的に決定されます.Xが0から5の範囲のみをプロットするなら,この範囲 を[0:5]の様に指定します.

gnuplot> plot [0:5] sin(x)
basic2


プロットでのパラメータを変更するためのコマンド

プロットに関するパラメータは非常にたくさんあり,これらは setコマンドで変更することができます.help コマンドで オンラインヘルプを見ればsetで変更できるパラメータの詳細が分かります.

gnuplot> help set
 The `set` command can be used to sets _lots_ of options.  No screen is
 drawn, however, until a `plot`, `splot`, or `replot` command is given.

 The `show` command shows their settings;  `show all` shows all the
 settings.

 If a variable contains time/date data, `show` will display it according to
 the format currently defined by `set timefmt`, even if that was not in effect
 when the variable was initially defined.

Subtopics available for set:
      angles         arrow          autoscale      bar
      bmargin        border         boxwidth       clabel
      clip           cntrparam      contour        data
      dgrid3d        dummy          encoding       format
.....
      zero           zeroaxis       zlabel         zmtics
      zrange         ztics

幾つかの変数を変えてみましょう.まず,xlabelとylabelに文字列を与え て,軸に名前を付けます.文字列は必ず引用符で囲みます.次にXとYの範囲を 与えます.先程の例では,plotコマンドに続いて範囲を指定しましたが, xrangeとyrangeに値を設定しても表示範囲が変わります(注:rangeに範囲を設 定しても plot で別の範囲を指定するとplotの方が優先されます)

gnuplot> set xlabel "X-AXIS"
gnuplot> set ylabel "Y-AXIS"
gnuplot> set xrange [0:5]
gnuplot> set yrange [-2:2]
gnuplot> plot sin(x)
basic3

標準では,gnuplotは画面にグラフを表示します.この出力先を変えて, プリンタで印刷したりPostScriptの図を作ったりするために使うのが, set terminal コマンドです.gnuplotはターミナル毎に,それに合っ たドライバを使って図を描くことで,機種の依存性を無くしています.出力可 能なターミナルは, set terminal コマンドを実行すると分かりま す.

gnuplot> set terminal

Available terminal types:
          unknown  Unknown terminal type - not a plotting device
            table  Dump ASCII table of X Y [Z] values to output
            linux  Linux PC with (s)vgalib
             ....
             tpic  TPIC -- LaTeX picture environment with tpic \specials
         pstricks  LaTeX picture environment with PSTricks macros
          texdraw  LaTeX texdraw environment
               mf  Metafont plotting standard

gnuplot> set terminal postscript
Terminal type set to 'postscript'
Options are 'landscape noenhanced monochrome dashed defaultplex "Helvetica" 14'

上の例のように, set terminal postscript とすると,gnuplot はPostScriptの図を生成します.そのままの状態でplotコマンドを実行すると, 出来上がったPostScriptは画面上を流れて行ってしまいます.この出力先を変 更するのが set output です.outputに続けて出力ファイル名を指 定すれば,PostScriptはこのファイルに出力されます.これをPostScriptプリ ンタに送れば印刷されたものが出来上がりです.

gnuplot> set output "plot.ps"
gnuplot> plot sin(x)


shellに関するコマンド

gnuplotから一時的にshellに抜けることができます.これには shell コマンドを使います.exit でshellを終了し,gnuplotのプロンプ トに戻ってきます.1行だけのshellコマンドなら, ! command を 使ってgnuplot内から実行することもできます.

pwd と cd は gnuplotのコマンドラインからでも実行できます.pwdはカ レントディレクトリを表示します.gnuplotは起動時のディレクトリをカレン トディレクトリとします.別のディレクトリに移動するには cd を 使いますが, cd "../" の様に,ディレクトリ名を必ず引用符で括 る必要があります.



関数の定義,変数への代入,変数内容の表示,計算のためのコマンド

gnuplotではコマンドラインで簡単な計算をする事が出来ます.コマンド ラインで,"変数=値"を入力すると,変数に数値が代入されます.変数の内容 を見るには print コマンドを使います.

gnuplot> a=10
gnuplot> print a
10

"変数=計算式" とすると,右辺の計算結果が変数に代入されます.計算は, 整数同士の演算以外は,倍精度で行われます.printに続けて計算式を与える こともできます.これを使うと,gnuplotを関数電卓代わりに使うことができます.

gnuplot> a=1+2*sqrt(3)
gnuplot> print log(a)
1.49606798806764

定義された変数はplotコマンドで関数をプロットするときに使えます.gnuplotで は円周率πの値が変数piに入っています.これを使ってa*sin(x)を-2πから+2πの範囲で 表示してみましょう.ここでaには0.5を代入しておきます.

gnuplot> set xrange [-2*pi:2*pi]
gnuplot> a=0.5
gnuplot> plot a*sin(x)
basic4

ユーザは,自分で関数を定義することができます.例えば,sin(x)*cos(x)という 関数をf(x)という名前で使いたいなら,

gnuplot> f(x)=sin(x)*cos(x)
のように定義します.以後,このf(x)という関数を使うことができます.関数の中に ユーザが定義した変数を含めることもできます.上の関数f(x)を全て"a"倍するような 関数は,

gnuplot> f(x)=a*sin(x)*cos(x)
と書くことができます.この関数はaの値によって変化します.



BACK: UP: NEXT: ENGLISH: