[Gnuplot Top] [Manuals]

Gnuplot Frequently Asked Question and Answer

---------- Gnuplot Frequently Asked Question and Answer ----------
---------- このファイルは、初心者向けのFAQファイルです。----------
---------- Gnuplot unix version 3.5 patchlevel 3 対応   ----------
---------- Version of this file is 1.2 (1994/4/28)      ----------

質問、疑問、文句、意見などは以下のアドレスまでメールを書いて下さい。

          tetu-s@is.aist-nara.ac.jp

このファイルはソフ研Copyleftです。つまり、作者の断りなしに他人に
どんどんコピーしなければなりません。sectionの頭にアスタリスクがついて
いるのは、emacsのアウトラインモードに対応させるためです。
######################################################################
* section 0 -- 目次
######################################################################

section 1 -- gnuplotそのものについて
 1.1) gnuplotとは何ですか?
 1.2) X windowでしか使用できませんか?
 1.3) 計算機能はありますか?
 1.4) GNUのプログラムですよね?
 1.5) gnuplotはどうやったら手に入りますか?
 1.6) 詳しいドキュメントはありますか?

section 2 -- gnuplotの実行
 2.1) gnuplotを使うにはどうすれば良いのですか?
 2.2) gnuplotを抜け出すにはどうすれば良いのですか?
 2.3) コマンドをファイルに書いておき、一気に実行することはできますか?

section 3 -- グラフを描く
 3.1) 関数のグラフ
  3.1.1) 関数のグラフを表示するにはどうすればよいのですか?
  3.1.2) 2つのグラフを重ねて描くことはできますか?
  3.1.3) グラフの表示範囲を変えるには?
  3.1.4) 3次元グラフを描くにはどうすればいいのですか?
  3.1.5) 媒介変数関数のグラフを描けますか?
 3.2) データーのグラフ
  3.2.1) いくつかの点のデーターを打つにはどうすれば良いのですか?
  3.2.2) データの大きさだけしか記録していないのですが?

section 4 -- グラフを出力する
 4.1) グラフをプリンタに出力したいのですが?
 4.2) グラフをTeXで使いたいのですが?

section 5 -- グラフの修飾、加工
 5.1) 対数グラフは描けますか?
 5.2) グラフを加工して手直ししたいのですが?
 5.3) グラフに縦横の線を入れることができますか?

section 6 -- 計算機能
 6.1) ちょっとした計算をするにはどうすれば良いですか?
 6.2) 複素数はどう表せば良いのですか?
 6.3) 自分で関数を定義するにはどうすれば良いのですか?

######################################################################
* section 1 -- gnuplotそのものについて
######################################################################
** 1.1) gnuplotとは何ですか?

    gnuplotとは、対話的にグラフを書くプログラムです。グラフは、関数(x^2や
    sin(x)など)の他に、実験データーなどの離散的な数値も描くことができます。
    また、2次元と3次元のグラフが描けます。

** 1.2) X windowでしか使用できませんか?

    gnuplotは、X windowの他にも、Postscriptやキャラクタベースでも出力
    できます。その他にもTeXのpicture環境フォーマットやfig形式、unixplot
    形式など、様々な出力形式を選択できます。
    また、Sunview、PC-9801などにも移植されています。

** 1.3) 計算機能はありますか?

    CやBASIC、fortranなどの言語で使用できる式をそのまま入力できます。
    また、複素数の計算もでき、三角関数からべっセル関数まで沢山の関数が
    用意されている上に自分で関数の定義もできるので、関数電卓としても
    使用できます。

** 1.4) GNUのプログラムですよね?

    いいえ、gnuplotはプロジェクトGNUとは関係ありません。フリーソフト
    ウェアです。作者が、
        本当は"newplot"にしたかったが、同名のソフトが存在したので
        "gnuplot"にした
    と語っています。

** 1.5) gnuplotはどうやったら手に入りますか?

    gnuplotは無料のソフトで、しかも有名なのでどこのannonymous FTPでも
    手に入るでしょう。もしもFTPアクセスができなく、メールでお願いする
    知合いもいないという人がいれば、

        tetu-s@icsd4.tj.chiba-u.ac.jp

    までメールを下さい。その時、compress+tar+uuencodeが良いか、
    lha+uuencodeが良いかを明記してくれれば、折り返し分割して送ります。

** 1.6) 詳しいドキュメントはありますか?

    gnuplotには、詳しいhelpコマンド、FAQ集の他にもTeXで50ページを越える
    ドキュメントがついてきます。また、その日本語版も存在します。
    システムの管理者に質問すれば手に入ると思いますが、もしも日本語版の
    ドキュメントが無いと言われたら、私か翻訳者の

              tamaru@keisu-s.t.u-tokyo.ac.jpさん

    に連絡を取ると良いでしょう。
   
######################################################################
* section 2 -- gnuplotの実行
######################################################################
** 2.1) gnuplotを使うにはどうすれば良いのですか?

    コマンドプロンプトが出ている状態で、

        gnuplot

    と打ち込んでみて下さい。何かメッセージが出て、プロンプトが

        gnuplot>

    になったら、gnuplotが立ち上がりました。

        gnuplot: Command not found.

    というメッセージが出たら、あなたのマシンにはgnuplotがインストールされて
    いません。

** 2.2) gnuplotを抜け出すにはどうすれば良いのですか?

    例えば、

    gnuplot> quit
    gnuplot> exit

    のように、quitやexitと打ち込んで下さい。コントロールキーを押しながらDを
    押してもいいかも知れません。

*** 2.3) コマンドをファイルに書いておき、一気に実行することはできますか?

    バッチジョブを行なうには、ファイルにgnuplotの命令を、改行で区切って
    書いておきます。

    例:
    set title "Graph"
    plot 2*x+1

    そして、gnuplotを立ちあげて、loadコマンドを実行します。

    gnuplot> load "ファイル名"

    すると、この例ではタイトルを"Graph"に設定し、y=2*x+1のグラフを描きます。

######################################################################
* section 3 -- グラフを描く
######################################################################
** 3.1) 関数のグラフ

*** 3.1.1) 関数のグラフを表示するにはどうすればよいのですか?

    グラフを描くには、plotというコマンドを使います。2次元のグラフの場合、
    plot の後にxを使った式を書きます。

    最も簡単な例:

    gnuplot> plot x

    こう打ち込むと、y=xの直線のグラフが表示されます。x-y軸の目盛も
    自動的に適当に付加されます。
    数式は、CやBASICなど幾つかの形式の式を入力できます。例えば、2次関数の
    グラフを書くには

    gnuplot> plot x**2

    とすれば、y=x^2のグラフを描くことができます。

*** 3.1.2) 2つのグラフを重ねて描くことはできますか?

    いくつかの関数のグラフを同時に描くには、plotコマンドでカンマで区切って
    書きます。

    gnuplot> plot x,x**2

    こうすれば、y=xとy=x^2のグラフが同時に表示されます。

*** 3.1.3) グラフの表示範囲を変えるには?

    plotの最初の引数で与えます。

    gnuplot> plot [-10:20] x**2

    こうすると、xを-10から20まで変化させた時のy=x^2のグラフが描かれます。
    y軸の範囲を定めるには、x軸上の範囲の次に続けて書きます。

    gnuplot> plot [-10:20] [-10:200] x**2

*** 3.1.4) 3次元グラフを描くにはどうすればいいのですか?

    splotというコマンドを使います。例えば、z=x+yのグラフを描くには

    gnuplot> splot x+y

    と打ち込みます。

*** 3.1.5) 媒介変数関数のグラフを描けますか?

    媒介変数による関数は、例えばx=f(t)、y=g(t)のように表されます。だから
    といって

    gnuplot> plot f(x),g(x)

    などとやると、y=f(x)とy=g(x)の二つのグラフが重なっているものが表示さ
    れます。そこでプロットする前に

    gnuplot> set parametric

    とすると、tを媒介変数とする媒介変数表示モードになります。そのあと

    gnuplot> plot f(t),g(t)

    と打ち込むと、x=f(t)、y=g(t)のグラフが描かれます。例えば、次の例は
    半径1の円を描きます。

    例:
    gnuplot> set parametric
    gnuplot> plot cos(t),sin(t)

** 3.2) データーのグラフ

*** 3.2.1) いくつかの点のデーターを打つにはどうすれば良いのですか?

    まず、データーをファイルに書きます。例えば、試験回数と点数のデータが
    あるとします。データは、次のようにx,yの順で記録しておきます。

    1  43
    2  55
    3  39
    4  78

    これをグラフにするには、

    gnuplot> plot "ファイル名"

    ただし、デフォルトではデーターを点で取りますが、このような移り代わりを
    表したデータは折れ線グラフで書きたいことがしばしばあります。
    そのときは、オプションをつけます。

    gnuplot> plot "ファイル名" with line

*** 3.2.2) データの大きさだけしか記録していないのですが?

    例えば、すぐ前の3.2.1)の成績のデータは、回数が連続しているので次のように
    記録していても、行数を回数と見れば意味は分かります。

    43
    55
    39
    78

    このようにファイルに記録されていると、gnuplotは行数をx座標と見て
    プロットしてくれます。(1行めはx=0、2行めはx=1、......)
    つまり、ほぼ3.2.1と同じグラフが出ます。
    これは、大量のデータ(音声データなど)の推移をグラフ化したい時に役立ちま
    す。

    1
    9
    -1
    0
    4
    12

    などというデーターをファイルに入れておき、

    gnuplot> plot "ファイル名" with line

    とすると、データー遷移を折れ線グラフにしたものが出力されます。
######################################################################
* section 4 -- グラフを出力する
######################################################################
** 4.1) グラフをプリンタに出力したいのですが?

    もしあなたがポストスクリプトプリンタを使用できるなら、グラフを描く前に
    次のコマンドを実行して下さい。

    gnuplot> set terminal postscript

    もしあなたがキャラクタベースのプリンタしか使用できないなら、次の
    コマンドを実行して下さい。

    gnuplot> set terminal dumb

    そして、直接プリンターに送ることもできますが、とりあえず一度ファイルに
    グラフをセーブすることにしましょう。

    gnuplot> set output "ファイル名"

    そのあとグラフを描きます。

    例:
    gnuplot> plot x**2

    するとグラフは画面に出力されないで、ファイルに出力されます。あとは、
    プリンターにリストを打ち出す要領で、ファイルを出力して下さい。

    例:
    1r "ファイル名"

** 4.2) グラフをTeXで使いたいのですが?

    ポストスクリプトファイルを使う方法や、TeXの描画機能を使う方法などが
    考えられます。もし取り込みたいグラフが簡単なものなら、次のコマンドを
    実行して下さい。

    gnuplot> set terminal latex

    もしも複雑なグラフを描きたいなら、代わりに次のコマンドを実行して
    下さい。

    gnuplot> set terminal postscript

    そして、一度ファイルに出力することにしましょう。terminalをlatexに
    したなら

    gnuplot> set output "ファイル名.tex"

    postscriptにしたなら

    gnuplot> set output "ファイル名.ps"

    と入力して下さい。そのあとグラフを描きます。

    例:
    gnuplot> plot x**3

    あとは、出力ファイルを取り込む命令をTeXファイルに書きます。簡単な
    グラフの時は、次のような感じです。

    例:(TeXのソースリストの中で)
    \input{ファイル名.tex}

    複雑なグラフの時(postscriptを使った時)は、次のような感じです。

    例:
    \documentstyle[epsf]{jarticle}
    \begin{document}
    \epsfile{file=ファイル名.ps,scale=0.5}
    \end{document}

    postscriptを使うとグラフが横になってでるはずです。もしもグラフを
    1ページに大きく出したいのではなく、文章の中に入れたいなら、横に
    ならないほうが良いでしょう。そういう時は、

    gnuplot> set terminal postscript portrait

    と打ち込んでから、グラフを描いて下さい。

######################################################################
* section 5 -- グラフの修飾、加工
######################################################################
** 5.1) 対数グラフは描けますか?

    実験観測データをグラフ化したい時に、対数グラフにしたいことは良くあり
    ます。

    gnuplot> set logscale 軸名

    通常はx軸とy軸を両方対数スケールにすれば良いでしょうから、

    gnuplot> set logscale xy

    とすればよいでしょう。x、yのどちらか片方でも構いません。

** 5.2) グラフを加工して手直ししたいのですが?

    もしあなたがX windowのxfigなど、fig形式のグラフィックファイルを
    扱えるグラフィックエディターを使えるのなら、次のように打ち込んで下さい。

    gnuplot> set terminal fig
    gnuplot> set output "ファイル名"

    そしてグラフを描いた後、xfigなどを立ち上げて出力したファイルを読み、
    加工して下さい。

    そのほかのグラフィック形式については、

    gnuplot> set terminal

    を参照して下さい。

** 5.3) グラフに縦横の線を入れることができますか?

    グラフ用紙のように、グラフの目盛のところに水平垂直な線を入れるには、
    グラフを描く前に次のコマンドを実行して下さい。

    gnuplot> set grid
######################################################################
* section 6 -- 計算機能
######################################################################
** 6.1) ちょっとした計算をするにはどうすれば良いですか?

    gnuplot> print sin(2.0/3.0*pi)
            0.866025

    このように、printのあとに数式を書くと、結果を表示してくれます。

** 6.2) 複素数はどう表せば良いのですか?

    gnuplot> print {1,2}**2
            {-3.0, 4.0}

    このように、{実部 , 虚部}と書きます。勿論、いくつかの関数の引数にも
    使えます。

    gnuplot> print abs({2,4})
            4.47214

    この場合、abs(a+ib)=sqrt(a^2+b^2)と定義されています。

** 6.3) 自分で関数を定義するにはどうすれば良いのですか?

    gnuplot> 関数名(引数) = 式

    例:
    gnuplot> f(x)=2*x+1

    勿論、このユーザー関数を計算に使ったり、グラフを描いたりもできます。

    例:
    gnuplot> plot f(x)

+--------------+ 佐藤 哲 奈良先端科学技術大学院大学情報科学研究科博士前期課程
|Soft I made is| Tetsu Satoh ,Nara Institute of Science and Technology,Japan
|ALL copyleft  |TEL:0436-35-4326 e-mail:tetu-s@is.aist-nara.ac.jp
+--------------+ ソフトウェア研究アカデミー代表

[この文書の先頭へ] [Gnuplot Top] [Manuals]