Next: , Previous: Plotting Formats, Up: Plotting   [Contents][Index]

12.3 Functions and Variables for Plotting

関数: contour_plot (expr, x_range, y_range, options, …)

exprの等高線を、領域x_rangey_rangeでプロットします。 他の引数は、plot3dと同じように扱われます。

この関数は、プロットフォーマットがgnuplotgnuplot_pipesの時だけ、 動作します。 付加パッケージimplicit_plotも等高線をプロットするのに使われ、 それは任意のフォーマットで動作します。 implicit_plotも参照してください。

例:

(%i1) contour_plot (x^2 + y^2, [x, -4, 4], [y, -4, 4])$
./figures/plotting2
(%i1) F(x, y) := x^3 + y^2;
                                   3    2
(%o1)                  F(x, y) := x  + y
(%i2) contour_plot (F, [u, -4, 4], [v, -4, 4])$

plot3dが受け付ける任意のオプションを足すことができます; 例えば、オプションlegendにfalseの値を入れると、凡例を取り除きます。 Gnuplotはデフォルトで3つの高等線を示すように選びます。 レベルの数を増やすには、カスタムのgnuplot前置きを指定する必要があります;

(%i1) contour_plot (u^3 + v^2, [u, -4, 4], [v, -4, 4], 
                    [legend,false],
                    [gnuplot_preamble, "set cntrparam levels 12"])$
関数: get_plot_option (keyword, index)

グローバル変数plot_optionsに保存されている 名前keywordを持つオプションの値を返します。 添字で1の値はキーワード自身を返します; 2番の値はキーワードに続く一番目のパラメータを返す、などなど。

plot_optionsset_plot_option、Plotting Optionの節も参照してください。

関数: make_transform ([var1, var2, var3], fx, fy, fz)

plot3dのオプションtransform_xyで使われるのに適した関数を返します。 3つの変数var1, var2, var3は3つのダミー変数名です。 それらは、plot3dコマンドが与える3変数 (最初2つの独立変数と、その後それら2つの変数に依存する関数)を表します。 3つの関数fx, fy, fzは、 それら3変数にだけ依存しなければいけなく、プロットすべき対応するx, y, z座標を与えます。 デフォルトで定義された2つの変換があります; polar_to_xyspherical_to_xyz; それら2つの変換に関するドキュメンテーションを参照してください。

システム関数: polar_to_xy

plot3dのtransform_xyオプションに対する値として与えることができます。 その効果はplot3dの2つの独立変数をz軸からの距離と方位角(極座標)として通訳し、 それらをxとy座標に変換することです。

関数: plot2d (plot, x_range, …, options, …)
関数: plot2d ([plot_1, …, plot_n], …, options, …)
関数: plot2d ([plot_1, …, plot_n], x_range, …, options, …)

ここで、plot, plot_1, …, plot_nは式か関数名、もしくは以下のいずれかの形式のリストです:

[discrete, [x1, ..., xn], [y1, ..., yn]], [discrete, [[x1, y1], ..., [xn, ..., yn]], または[parametric, x_expr, y_expr, t_range].

1つもしくは複数の式を1変数か1パラメータの関数としてプロット表示します。

plot2dは1つもしくは複数のプロットを2次元に表示します。 プロットを定義するのに式や関数名を使う時には、 それらは1変数varだけに依存すべきであり、 変数名とその最小値と最大値を提供するためにx_rangeの使用が必須です; x_rangeの構文法は以下の通りです:

[variable, min, max]

プロットを、離散形式やパラメトリック形式で定義することもできます。 離散形式は既定の座標で表された点の集合をプロットするのに使われます。 離散プロットは、キーワードdiscreteで始まり、 値についてのリスト1つか2つが続くリストで定義されます。 もし2つのリストが与えられたら、それらは同じ長さを持たなければいけません; 1番目のリストはプロットされる点のx座標として、 2番目のリストはy座標として解釈されます。 もしdiscreteキーワードの後、1つのリストだけ与えられたら、 リスト上のそれぞれの要素は、点のxとy座標に対応する2つの値を持つリストでなければいけません。

パラメトリックプロットは、 キーワードparametricで始まり、 2つの式か関数名と、パラメータの範囲が続くリストで定義されます。 パラメータの範囲は、パラメータ名とその最小値、最大値が続くリストでなければいけません:

[param, min, max]

paramminからmaxに増えるにつれ、 2つの式または関数で与えられる座標の点によって描かれる軌跡をプロットは表示します。

垂直軸の範囲は以下の形式を持つオプション引数です:

[y, min, max](キーワードyはいつも垂直軸に使われます)。

もしこのオプションを使ったなら、 プロットが到達する値と別に、ちょうどオプションの垂直範囲をプロットは表示します。 もし垂直範囲を指定しなかったなら、プロット点のy座標の最小値と最大値に従って、 垂直範囲が設定されます。

他のすべてのオプションも、 キーワードで始まり、1つか複数の値が続くリストでなければいけません。 plot_optionsを参照してください。

もし複数のプロットがプロットされるなら、式のそれぞれを識別するために凡例が書かれます。 その凡例で使われるラベルは、オプションlegendで与えることができます。 もしそのオプションが使われないなら、Maximaは式や関数名からラベルを生成します。

例:

よくある関数のプロット:

(%i1) plot2d (sin(x), [x, -%pi, %pi])$
./figures/plotting2

もし関数の増大が速すぎるなら、yオプションを使って、垂直軸の値を制限する必要があるかもしれません:

(%i1) plot2d (sec(x), [x, -2, 2], [y, -20, 20])$
plot2d: some values were clipped.
./figures/plotting3

プロットの外観は使うプロットプログラムに依存して異なるかもしれません。 プロットボックスが使用不可能になっている時、Xmaximaは矢印を使って軸をプロットします:

(%i1) plot2d ( x^2-1, [x, -3, 3], [y, -2, 10],
                      [box, false], [plot_format, xmaxima])$
./figures/plotting1

対数プロットの例:

(%i11) plot2d (exp(3*s), [s, -2, 2], [logy])$
./figures/plotting4

関数を名前でプロット:

(%i1) F(x) := x^2 $
(%i2) :lisp (defun |$g| (x) (m* x x x))
$g
(%i2) H(x) := if x < 0 then x^4 - 1 else 1 - x^5 $
(%i3) plot2d ([F, G, H], [u, -1, 1], [y, -1.5, 1.5])$
./figures/plotting5

パラメトリックに定義されたバタフライカーブのプロット:

(%i1) r: (exp(cos(t))-2*cos(4*t)-sin(t/12)^5)$
(%i2) plot2d([parametric, r*sin(t), r*cos(t), 
             [t, -8*%pi, 8*%pi], [nticks, 2000]])$
./figures/plotting6

7点だけでプロットする時の2回転「円」:

(%i1) plot2d ([parametric, cos(t), sin(t),
              [t, -2*%pi, 2*%pi], [nticks, 8]])$
./figures/plotting7

円のパラメトリック表現と一緒に、よくある関数のプロット。 プロットのサイズは、円を丸く、楕円のように変形しないように、 xとyオプションで調整されています。 これらの値は、このプロットを生成するのに使われたPostscript端末ではうまく機能します; あなたはあなたのスクリーンのために値を調整しなければいけないかもしれません。

(%i1) plot2d([[parametric, cos(t), sin(t),
              [t,0,2*%pi], [nticks, 80]],
        abs(x)], [x,-2,2], [y, -1.5, 1.5])$
plot2d: some values were clipped.
./figures/plotting8

x座標、y座標を別々に定義した点の離散集合のプロット:

(%i1) plot2d ([discrete, [10, 20, 30, 40, 50],
                         [.6, .9, 1.1, 1.3, 1.4]])$
./figures/plotting9

それぞれの点を別々に定義し、点を繋ぐ線をなくした、前の例で示された同じ点:

(%i1) plot2d([discrete, [[10, .6], [20, .9], [30, 1.1],
                         [40, 1.3], [50, 1.4]]],
                        [style, points])$
./figures/plotting10

この例では、3つの列を持つテーブルがファイル”data.txt”に保存され、 読み込まれ、2番目、3番目の列は2つの軸上にプロットされます:

(%i1) with_stdout ("data.txt", for x:0 thru 10 do 
                                   print (x, x^2, x^3))$
(%i2) data: transpose ( read_matrix ("data.txt"))$
(%i3) plot2d ([discrete, transpose(data)[2], transpose(data)[3]],
  [style,points], [point_type,diamond], [color,red])$
./figures/plotting11

実験データ点を、データを予測する理論的関数と一緒にプロット:

(%i1) xy: [[10, .6], [20, .9], [30, 1.1], [40, 1.3], [50, 1.4]]$
(%i2) plot2d([[discrete, xy], 2*%pi*sqrt(l/980)], [l,0,50],
        [style, points, lines], [color, red, blue],
        [point_type, asterisk],
        [legend, "experiment", "theory"],
        [xlabel, "pendulum's length (cm)"],
        [ylabel, "period (s)"])$
./figures/plotting12

プロットオプションに関する節も参照してください。

関数: plot3d (expr, x_range, y_range, …, options, …)
関数: plot3d ([expr_1, expr_2, expr_3], x_range, y_range, …, options, …)

2変数関数もしくはパラメトリック形式で定義された、1つか複数の表面のプロットを表示します。

プロットされる関数は、式か関数名として指定できます。 違った側面から表面を見るためにマウスを使ってプロットを回転することができます。

例:

よくある関数のプロット:

(%i1) plot3d (2^(-u^2 + v^2), [u, -3, 3], [v, -2, 2]);
./figures/plotting13

無限大に発散する関数を制限するためのzオプションの使用(この場合、関数はxとy軸上でマイナス無限だい); これは線のみ陰影なしでプロットする仕方も示します。

(%i1) plot3d ( log ( x^2*y^2 ), [x, -2, 2], [y, -2, 2], [z, -8, 4],
               [palette, false], [color, magenta, blue])$
./figures/plotting14

zの無限大は、いかなる漸近線上にも落ちないグリッドを選ぶことによっても避けることができます; この例は事前に定義されたパレットの1つ、この場合4番目のものを選択する仕方も示します:

(%i1) plot3d( log (x^2*y^2), [x, -2, 2], [y, -2, 2], 
         [grid, 29, 29],
         [palette, get_plot_option(palette,5)])$
./figures/plotting15

同じ領域を共有する同じプロットでの2つの表面; gnuplotでは2つの表面は同じパレットを使用します:

(%i1) plot3d ([2^(-x^2 + y^2), 4*sin(3*(x^2+y^2))/(x^2+y^2),
              [x, -3, 3], [y, -2, 2]])$
./figures/plotting16

異なる領域を持つ、同じ2つの表面; xmaximaでは、それぞれの表面は、オプションパレットで定義されたリストから選ばれた 異なるパレットを使います:

(%i1) plot3d ( [[2^(-x^2 + y^2),[x,-2,2],[y,-2,2]],
         4*sin(3*(x^2+y^2))/(x^2+y^2),
         [x, -3, 3], [y, -2, 2]], [plot_format,xmaxima])$
./figures/plotting17

パラメトリックに定義されたKleinの壷のプロット:

(%i1) expr_1:5*cos(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3.0)-10.0$
(%i2) expr_2:-5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y) + 3.0)$
(%i3) expr_3: 5*(-sin(x/2)*cos(y) + cos(x/2)*sin(2*y))$
(%i4) plot3d ([expr_1, expr_2, expr_3], [x, -%pi, %pi],
        [y, -%pi, %pi], [grid, 40, 40])$
./figures/plotting18

球座標から直交座標に変換するのにあらかじめ定義された変換spherical_to_xyz を使った球調和のプロット。 spherical_to_xyzに関するドキュメンテーションを参照してください。

(%i1) plot3d (sin(2*theta)*cos(phi), [theta, 0, %pi],
              [phi, 0, 2*%pi],
              [transform_xy, spherical_to_xyz], [grid,30,60])$
./figures/plotting19

円筒座標から直交座標に変換するのにあらかじめ定義された変換polar_to_xyz を使った球面調和関数のプロット。 polarl_to_xyzに関するドキュメンテーションを参照してください。 この例は境界ボックスと凡例を消去する仕方も示します。

(%i1) plot3d (r^.33*cos(th/3), [r, 0, 1], [th, 0, 6*%pi],
         [grid, 12, 80],
         [transform_xy, polar_to_xy], [box, false],
         [legend,false])$
./figures/plotting20

球座標から直交座標への変換を使っての球のプロット。 xmaximaでは、球の対称形を維持するように3つの軸は同じ比でスケールされます。 同一色で異なる陰影のパレットが使われます:

(%i1) plot3d ( 5, [theta, 0, %pi], [phi, 0, 2*%pi],
         [plot_format,xmaxima],
         [transform_xy, spherical_to_xyz],
         [palette,[value,0.65,0.7,0.1,0.9]])$
./figures/plotting21

行列を使った2変数関数の定義。 関数の定義の中のシングルクォートに注意してください。 行列が整数添字を要求する状況に実際に至る時、plot3dが失敗しないためのものです。

(%i1) M: matrix([1, 2, 3, 4], [1, 2, 3, 2], [1, 2, 3, 4],
                [1, 2, 3, 3])$
(%i2) f(x, y) := float('M [round(x), round(y)])$
(%i3) plot3d (f(x,y), [x, 1, 4], [y, 1, 4], [grid, 4, 4])$
apply: subscript must be an integer; found: round(x)
./figures/plotting22

elevationを零の等しく設定することで, 表面は地図として見ることができます。 その地図は、それぞれの色は違ったレベルを表現します。 オプションcolorboxは、 色とレベルの対応を示すのに使われます。 メッシュ線を使用不可にし、色が見やすいようにしています。

(%i1) plot3d (cos (-x^2 + y^3/4), [x, -4, 4], [y, -4, 4],
        [mesh_lines_color, false], [elevation, 0], [azimuth, 0],
        [colorbox, true], [grid, 150, 150])$
./figures/plotting23

プロットオプションについての節も参照してください。

システム変数: plot_options

このリストの要素は、プロットのデフォルトオプションを指定します。 もしplot2dもしくはplot3dがコールされる時、オプションが指定されたら、 その値は、デフォルトオプションより優先されます。 そうでなければ、plot_optionsの中の値が使われます。 デフォルトオプションは、set_plot_optionを使って割り当てられます。 それぞれのプロットコマンドに特化したローカルオプションがあり、それらは、この、グローバルオプションのリストには含まれません。

plot_optionsのそれぞれの要素は、2つ以上の項目のリストです。 最初の項目はオプション名で、残りはオプションに割り当てられる値です。 いくつかの場合、割り当てられた値はリストであり、複数の項目からなることがあります。

set_plot_optionget_option、プロットオプションの節も参照してください。

関数: set_plot_option (option)

プロットオプションの節にリストされているオプションのほとんどを受け付け、 それらをグローバル変数plot_optionsに保存します。

set_plot_optionは引数を評価し、 (与えられたオプションを変更した後、)完全なリストplot_optionsを返します。

plot_optionsget_option、プロットオプションの節も参照してください。

例:

grid値の変更。

(%i1) set_plot_option ([grid, 30, 40]);
(%o1) [[t, - 3, 3], [grid, 30, 40], [transform_xy, false], 
[run_viewer, true], [axes, true], [plot_format, gnuplot_pipes], 
[color, blue, red, green, magenta, black, cyan], 
[point_type, bullet, circle, plus, times, asterisk, box, square, 
triangle, delta, wedge, nabla, diamond, lozenge], 
[palette, [hue, 0.25, 0.7, 0.8, 0.5], 
[hue, 0.65, 0.8, 0.9, 0.55], [hue, 0.55, 0.8, 0.9, 0.4], 
[hue, 0.95, 0.7, 0.8, 0.5]], [gnuplot_term, default], 
[gnuplot_out_file, false], [nticks, 29], [adapt_depth, 5], 
[gnuplot_preamble, ], [gnuplot_default_term_command, 
set term pop], [gnuplot_dumb_term_command, set term dumb 79 22], 
[gnuplot_ps_term_command, set size 1.5, 1.5;set term postscript ¥
eps enhanced color solid 24], [plot_realpart, false]]
システム関数: spherical_to_xyz

plot3dのtransform_xyオプションに対する値として与えることができます。 その効果はplot3dでの2つの独立変数と関数を点の球座標 (1番目はz軸に対する角度、次にxy射影のx軸に対する角度、最後に原点からの距離) として解釈し、それらをx,y,z座標に変換することです。


Next: , Previous: Plotting Formats, Up: Plotting   [Contents][Index]