グラフ電卓

Octave のグラフ作成機能は gnuplot を利用しています。詳しい書式はマニュアルを参照していただくとして、実例をいくつか実行してみましょう。

gplot

gplot コマンドは gnuplot の plot コマンドを利用しています。gplot の書式は

gplot RANGES EXPRESSION USING TITLE STYLE

です。RANGE(範囲)は [ x_lo : x_hi ][ y_lo : y_hi ] で与えます。EXPRESSION には複数の式 をコンマで区切って与えることができます。USING, TITLE などの記法は gnuplot の help などを参考にしてください。

gplot は基本的にはN行2列の行列を引数に取り第一列をx軸に、第二列をy軸にプロットします。次の例は1000行2列の行列 A を作成して、gplot でグラフを作成しています。

octave:1> x = (-3: 0.1: 3) ';  .... -3から3までの0.1刻の数列を作ります。横ベクトルで作成されるので、' で転置して縦ベクトルにします。
octave:2> y = sin(x);  
octave:5> A = [x, y];  ............ xベクトルとyベクトルを横にならべてA行列を作ります。

octave:4> gplot A
octave:5> gplot A with linespoints
octave:6> gplot A with points
octave:7> gplot A with dots
octave:8> gplot A with impulses

octave:9> gplot ([x, y])

octave:10> y1 = cos(x)

octave:11> gplot ([x, y]) with lines, ([x, y1]) with points

octave:12> t = linspace (0, 6*pi, 1000) ';  .... 0から6Πまでの区間を1000等分した数列を作ります。横ベクトルで作成されるので ' で転置して縦ベクトルにします。
octave:13> u = sin ( 2 * t );
octave:14> v = sin ( 3 * t );
octave:15> gplot ([u, v])

gplot の引数に縦一列のベクトルが与えられると 0 から始まるインデックスを x 軸に、ベクトルの要素を y 軸にとってグラフを作成します。

octave:16> gplot y, y1

plot

二次元グラフを作成するコマンドには gplot 以外に plot があります。

octave:17> plot (x, y)
octave:18> plot (x, y, "*")
octave:19> plot (x, y, "x")
octave:20> plot (x, y, "+", x, y1, "^") 
octave:21> plot (u, v)

octave:22> plot (x, y, "@10")   .... ・
octave:23> plot (x, y, "@11")   .... 〇
octave:24> plot (x, y, "@12")   .... +
octave:25> plot (x, y, "@13")   .... □
octave:26> plot (x, y, "@14")   .... ×
octave:27> plot (x, y, "@15")   .... △
octave:28> plot (x, y, "@16")   .... *

octave:29> plot (x, y, "@01")   .... 灰色
octave:30> plot (x, y, "@11")   .... 赤色
octave:31> plot (x, y, "@21")   .... 緑色
octave:32> plot (x, y, "@31")   .... 青色
octave:33> plot (x, y, "@41")   .... 紫色
octave:34> plot (x, y, "@51")   .... 水色
octave:35> plot (x, y, "@61")   .... 茶色

参考までに help __ptlopt__ で表示されるプロットのフォーマットの種類を次に示します。

   "-"   for lines plot style (default).
   "."   for dots plot style.
   "@"   for points plot style.
   "-@"  for linespoints plot style.
   "^"   for impulses plot style.
   "L"   for steps plot style.
   "#"   for boxes plot style.
   "~"   for errorbars plot style.
   "#~"  for boxerrorbars plot style.
   "n"   with n in 1-6 (wraps at 8), plot color
   "nm"  with m in 1-6 (wraps at 6), point style (only valid for "@" or "-@")
   "c"   where c is one of ["r", "g", "b", "m", "c", "w"] colors.
   ";title;" where "title" is the label for the key.

   
   Special points formats:

      "+", "*", "o", "x" will display points in that style for term x11.

ユーザー定義関数のプロットの仕方

ユーザー定義関数は function コマンドで作成します。function 戻り値 = 関数名 (引数名) でユーザー関数を次のように定義することができます。関数を使うときは、f(t) のように定義の変数名と実際の変数名が異なっても構いません。また、関数を定義するときに、演算子が .* のようにドットつきなのは引数にベクトルを取ることを想定しているからです。例えば y = x*x - 2*x - 3 のグラフのプロットをしたいときは次のようにします。

octave:4> function y = f (x)
> y = x .* x .- 2 .* x .-3;
> endfunction
octave:5> t = linspace (-4, 4, 100);
octave:6> gset grid
octave:7> plot (t, f(t))

上の例で gset grid はグラフにグリッドを表示させるためのコマンドです。gset nogrid でグリッドを表示させないようにすることができます。また gplot で横ベクトルを引数にすると次のようにエラーになりますが、plot コマンドでは引数に、横ベクトルも縦ベクトルも取ることができます。

octave:7> t = (-3:0.1:3);
octave:8> gplot (t)
(グラフが正しく表示できず、最初のデータのみのプロットになる)
octave:9> plot(t)
octave:10> plot (t')