---------- 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を使うにはどうすれば良いのですか?
コマンドプロンプトが出ている状態で、
0nuplot
と打ち込んでみて下さい。何かメッセージが出て、プロンプトが
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
+--------------+ ソフトウェア研究アカデミー代表