next up previous contents
Next: . Up: 対話的な使い方 Previous: 終了 - quit -

データ(点列)の表示 - plot 'filename' [with style] -

次のような内容のデータファイル 'sqx.dat' があったとします。
0   0    0
0.5 0.25 0.125
1.0 1.00 1.000
1.5 2.25 3.375
 ...
 ...
5.0 25.00 125.000
5.5 30.25 166.375
これをGNUPLOTで表示してみましょう。対話モードで起動して、plot を実行しま す。
\begin{screen}
\tt gnuplot> \sl plot 'sqx.dat'
\end{screen}
何もオプション指定しなければデータファイルの第1列を $x$ の値、 第2列を $y$ の値として、マーク(point)で描きます。上のプロットに重ねて、第1 列と第3列を $x,y$ の値とした折れ線(line)を描くには次のように ',' で全体を区切って並べ列指定に using i:j を用いればいいのです。
\begin{screen}
\tt gnuplot> \sl plot 'sqx.dat' title 'x**2', 'sqx.dat' using 1:3
title 'x**3' with line
\end{screen}

図: データ(点列)ファイルのグラフ化の例
\includegraphics[scale=0.8]{figs/sqx.eps}

ちょっと寄り道

ところで、このテストのためのデータファイルはどのようにして作成したらいい でしょうか。0.5から5.5まで0.5間隔の実数の2乗と3乗の値を計算してエディタ mule で書くのでは、計算機の名が泣きます。ここは、やはりプログラムを組ん でファイルを作成したいものです。では、プログラム言語は何がいいでしょうか? 第1候補は前期に学習したPascalでしょう。


\begin{itembox}[r]{\bf Pascalで書いた例:sqx.pas}
\small\baselineskip 1.2em
\beg...
...writeln(x:9, x*x:9, x*x*x:9);
x := x+0.5
end;
end.\end{verbatim}
\end{itembox}
これをコンパイルして実行ファイルを作成したいのですが、Linux(GNU)では Pascalのコンパイラがありません。しかし、あらゆるプログラミング言語開発環 境が提供されているUNIXでは、他の手段があります。p2cを使って一端 C言語のソースに変換し、gccでコンパイルするのです。まず、C言 語のソースに変換します。
\begin{screen}
\sl p2c sqx.pas
\end{screen}
これで sqx.c が出来上がっているはずです。これを gcc でコンパイルし ます。
\begin{screen}
\sl gcc sqx.c -o sqx -lm -lp2c
\end{screen}
-o filename は実行ファイルの名前の指定です。これが無いとa.out という実行ファイルが出来てしまいます。-lm -lp2cはリンクする ライブラリの指定です。これは、今のところ必要なオマジナイと考えてください。 では、sqx を実行してください。データが画面に出力されます。これを、 ファイルに保存するには、リダイレクト機能を使って、出力先を変更すれ ば可能です。
\begin{screen}
\sl sqx {\tt >} sqx.dat
\end{screen}
どうやら sqx.dat ファイルが出来ました。 実は、gpc というコンパイラがありますが、現在インストールされていないので 使用出来ません。将来もし gpc が使用可能になったなら gpc sqx.pas -o sqx とコンパイルが簡単になります。

しかし、この程度の計算にPascalやCは大袈裟です。そこで、もっと易しいスク リプト言語を使ってみましょう。例えば、あとの節で詳しく紹介しますがPerlでやってみましょう。次のようなスクリプトファイルを sqx.pl として作 成してください。
\begin{itembox}[r]{\bf Perlの場合}
\small\baselineskip 1.2em
\begin{verbatim}$...
...f %.3f \n'', $x, $x*$x, $x*$x*$x ;
$x = $x + 0.5;
}\end{verbatim}
\end{itembox}
このスクリプトを Perl に読み込ませて実行します。
\begin{screen}
\sl jperl sqx.pl {\tt ( > sqx.dat)}
\end{screen}
画面に計算結果があらわれましたか? ( )内を追加すると、出力は sqx.dat に リダイレクトされます。コンパイルの手間が無い分、楽です。



Subsections

Kishimoto Ken
平成20年3月1日