[[takataka]] | [[Docs]]

RIGHT:2007-04-20 wiki版初版
RIGHT:2008-04-02 Docsの下に移動

*gnuplotの使い方 [#q2ff12e1]

#contents

*1. はじめに [#intro]

この文書は,グラフ描画ソフトgnuplotの使い方を説明したものです.
初歩的なことしか書いてありませんので,より詳しいことが知りたくなったら[[リンク>#link]]をたどってみて下さい.

下記では,UNIX系OS上で動作する version 4.0(注)を想定しています.でも,バージョン固有の機能は使ってませんので,以下の内容はあちこちに転がってる大抵のバージョンのgnuplotで通用すると思います.

注:実行例は,2007年4月現在,龍谷大学瀬田学舎の計算機実習室のLinux機にインストールされている gnuplot version 4.0 を使って作成しています.
Windows機にもインストールされています.

*2. 起動・終了の仕方 [#start]

端末上で

 $ gnuplot

と入力するとgnuplotが起動します.

#pre{{

        G N U P L O T
        Version 4.0 patchlevel 0
        last modified Thu Apr 15 14:44:22 CEST 2004
        System: Linux 2.6.0-24

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

        This is gnuplot version 4.0.  Please refer to the documentation
        for command syntax changes.  The old syntax will be accepted
        throughout the 4.0 series, but all save files use the new syntax.

        Type `help` to access the on-line reference manual.
        The gnuplot FAQ is available from
                http://www.gnuplot.info/faq/

        [中略]

Terminal type set to 'x11'
gnuplot> 
}}

デフォルトでは出力端末がXになっているので,グラフはすべてXを使用して別のウインドウに出て来ます.
出力端末を変更することで,postscript,PNG画像,TGIFのobj形式など,様々なファイル形式で出力させることも可能です([[ファイルへの出力>#output]]参照).

終了するときは,

 gnuplot> quit

と入力します.

*3. 二次元のグラフを描く [#plot]

ためしに y=sin(x) を描いてみましょう.

 gnuplot> plot sin(x)

このように入力すると,下のようなグラフが得られます.

//http://tortoise1.math.ryukoku.ac.jp/~takataka/gnuplot/sin_x.gif
&ref(sin_x.gif);

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)

というように入力します.

*4. 描画範囲の指定 [#range]

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

//http://tortoise1.math.ryukoku.ac.jp/~takataka/gnuplot/sin_cubic-1.gif
&ref(sin_cubic-1.gif);

これじゃちょっと悲しいので,X軸とY軸の範囲を指定しましょう.範囲指定の方法には,二通りあります.

-その一
 gnuplot> plot [-pi:pi][-2:2] sin(x), (x+1)*x*(x-1)
(X軸範囲指定に使っている "pi" というのは,gnuplot で円周率を表す記号です)
-その二
#pre{{
 gnuplot> set xrange [-pi:pi]
 gnuplot> set yrange [-2:2]
 gnuplot> plot sin(x), (x+1)*x*(x-1)
}}
 
その一の場合,範囲指定はこのプロットにおいてのみ有効となります.
その二の場合は,この範囲指定が以降のデフォルトとなります.
どちらの場合も,下のグラフが得られます.

//http://tortoise1.math.ryukoku.ac.jp/~takataka/gnuplot/sin_cubic-2.gif
//http://tortoise1.math.ryukoku.ac.jp/~takataka/gnuplot/sin_cubic-2.png
&ref(sin_cubic-2.png);

グラフを何度も描き直す場合は,一度

 gnuplot> plot sin(x), (x+1)*x*(x-1)

等とやったあとは,

 gnuplot> replot

で同じグラフを描き直してくれます.範囲をいろいろ変えながらプロットしてみたい時には便利でしょう.

*5. ファイルからデータを読み込む [#input]

次は,関数を指定するのではなく,テキストファイルに書き込まれたデータをグラフにする場合です.

gnuplotを起動したのと同じディレクトリ内に次のような内容のファイルが "data" という名前で存在しているとします(先頭が#の行はコメント).

#pre{{
# 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軸のデータとみなして描かれます(以下の例は折れ線+点で描かれてますが,デフォルトでは点のみで描かれるはずです).

//http://tortoise1.math.ryukoku.ac.jp/~takataka/gnuplot/Rossler-1.gif
&ref(Rossler-1.gif);

*6. スタイルの指定 [#style]

ファイルから読み込んだデータを表示する場合,デフォルトの描画スタイルは点を使ったものになります.これを変更したければ,

 gnuplot> plot "data" with lines, "data" using 1:3 with points 

のように入力します.すると,下図のような出力が得られます.

//http://tortoise1.math.ryukoku.ac.jp/~takataka/gnuplot/Rossler-2.gif
&ref(Rossler-2.gif);

ところで,gnuplotのコマンドは,区別がつく限り後ろの文字を省略してもかまわないので,上記は

 gnuplot> p "data" w l, "data" u 1:3 w p 

としてもかまいません.

デフォルトのスタイルを変更したい場合は,

 gnuplot> set style data lines 

と入力すると,以降スタイル指定なしのグラフは "with lines" で描かれます.どんなスタイルが使えるかは,

 gnuplot> help style

として調べて見て下さい([[ヘルプの使い方>#help]]参照).

*7. 三次元のグラフを描く [#splot]

3次元のグラフを描くには,"splot"コマンドを使います.

 gnuplot> splot sin(x)*cos(y)

3次元のグラフの場合,見やすくするために視点を変えて描画させる必要もでてくるでしょう.
視点を変える方法については,"view"コマンドのヘルプを参照して下さい.
ちなみに,最近のバージョン(version 4.0以降)では,三次元グラフをマウスでぐりぐり回せたりします.

*8. ファイルへの出力 [#output]

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

 gnuplot> set terminal

このように入力すると,使える出力端末の一覧が表示されます.
例えば,画面に表示されているグラフをPNG形式の画像ファイル "out.png" として出力させる場合には,次のようにします.

#pre{{
gnuplot> set terminal png color
Terminal type set to 'png'
Options are 'small color picsize 640 480 '
gnuplot> set output "out.png"
gnuplot> replot
}}

こうすると,カレントディレクトリに "out.png" が作られます.

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

 gnuplot> set output
 gnuplot> set terminal x11

これで,以降のグラフは再び画面に描画されるようになります.

*9. ヘルプの使い方 [#help]

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

例えば "plot" コマンドの使い方を知りたい時は,

 gnuplot> help plot

と入力すると,ヘルプが画面にあらわれます.
ヘルプの画面は,less等のページャと同様の操作でスクロールさせることができます.
参照したヘルプにサブトピックがある場合,ヘルプの最後にその一覧が出て来ます.例えば上の例では,最後までスクロールすると下のようになります.

#pre{{
Subtopics available for plot:
    acsplines         bezier            csplines          datafile
        :               :                  :                 :
    with

Subtopic of plot: 
}}

上の選択肢から選んで入力すればそのヘルプへ移り,何も入力せずにリターンを押すとヘルプを終了して元の画面に戻ります.

*10. リンク [#link]

-gnuplot入門 http://t16web.lanl.gov/Kawano/gnuplot/intro/index.html
-gnuplot homepage http://gnuplot.info/
-グラフは Gnuplot にお任せ http://ayapin.film.s.dendai.ac.jp/~matuda/Gnuplot/gnuplot.html

*11. あれこれ [#tips]

**印刷したい [#qb19f8a7]

[[Docs/gnuplot/print]] ←こちらへどうぞ.


**プログラムとの連係 [#i27b256c]

C言語等のプログラムが時々刻々出力するデータをリアルタイムにgnuplotでグラフにしたい,という場合の話です.

工事中

-[[CのプログラムからGNUPLOTを動かす方法>http://tortoise1.math.ryukoku.ac.jp/~takataka/gnuplot/fromC.html]]
-[[CのプログラムからGNUPLOTを動かす方法>http://tortoise1.math.ryukoku.ac.jp/~takataka/gnuplot/fromC.html]](古いです)
現在の gnuplot ではこんな面倒な手を使わずに pause と reread で簡単です

**旧ページ [#dcbc70e4]

こちら http://tortoise1.math.ryukoku.ac.jp/~takataka/gnuplot/

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS