| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
10.1 グラフ表示に関する諸定義
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[[x1,y1,x2,y2,...],[u1,v1,u2,v2,...],..] や [[[x1,y1],[x2,y2],...],.. ] |
"{xrange -3 4}"の様に
与える。次の二つの曲線のグラフでは、大きな点で、最初のものにはラベル
jimを付け、第二のものにはjaneを付けて表示する。
openplot_curves([["{plotpoints 1} {pointsize 6} {label jim}
{text {xaxislabel {joe is nice}}"] ,
[1,2,3,4,5,6,7,8],
["{label jane} {color pink } "], [3,1,4,2,5,7]]);
|
他の特別なキーワードはxfun,color,plotpoints,linecolort,pointsize, nolines, bargraph, labelposition, xaxislabelとyaxislabelがある。
plot2d(sin(x),[x,-5,5]); plot2d(sec(x),[x,-2,2],[y,-20,20],[nticks,200]); |
更に、EXPRに助変数式を用いても良い:
PARAMETRIC_EXPRは[parametric, xexpr, yexpr, trange, ..options]の形式
のMAXIMAのリストであり、ここでXEXPRとYEXPRは値域TRANGEの最初の元VARの1変数
関数となる。グラフ表示は[XEXPR, YEXPR]の対で、TRANGEでのVARの変化に
沿った軌跡である。次の例では円を描き、それから、星型が得られる様に幾つかの
点だけで描き、最後に円と一緒にXの通常の関数を描く。
(C1) plot2d([parametric,cos(t),sin(t),[t,-%pi*2,%pi*2]]);
(C2) plot2d([parametric,cos(t),sin(t),[t,-%pi*2,%pi*2],
[nticks,8]]);
(C3) plot2d([x^3+2,[parametric,cos(t),sin(t),[t,-5,5]]],
[x,-3,3]);
|
点集合の形式は
[x0,y0,x1,y1,x2,y2,...] または [[x0,y0],[x1,y1],....] |
xgraph_curves([pt_set1,pt_set2,pt_set3]); |
pt_set:append(["NoLines: True","LargePixels: true"],
[x0,y0,x1,y1,...])
|
は点集合[とその部分]を構築し、点との間には線分が無い大きな点を用いる。 指定可能なオプションに関しては、xgraphのmanページを見よ。
pt_set:append([concat("\"","x^2+y")],[x0,y0,x1,y1,...])
|
"は
xgraphにラベルである事を指定するものである。
pt_set:append([concat("TitleText: Sample Data")],[x0,...])
|
.2 unitの幅の棒グラフを作り、異なった棒グラフを二つ表示する為には:
xgraph_curves(
[append(["BarGraph: true","NoLines: true","BarWidth: .2"],
create_list([i-.2,i^2],i,1,3)),
append(["BarGraph: true","NoLines: true","BarWidth: .2"],
create_list([i+.2,.7*i^2],i,1,3))
]);
|
テンポラリファイルとして`xgraph-out'が使われる。
[X, - 3, 3] [Y, - 3, 3] |
make_transform([x,y,z], [f1(x,y,z),f2(x,y,z),f3(x,y,z)]) |
make_transform([r,th,z],[r*cos(th),r*sin(th),z]) |
これらの書式に対しては高品位でパブリックドメインの可視化ツールがある。 それらはopenmath,izic,gnuplot,ghostviewとgeomviewである。
Openmath viewerはこの配布に含まれており、tcl/tkで構築されている。 実行ファイルは`maxima/bin/omplotdata'である。この可視化ツールは拡大、 並行移動と(三次元であれば)回転が行える。この書式は、Netmathグラフ表示を行う 為に、netmathでも用いられているものである。 (`http://www.ma.utexas.edu/users/wfs/netmath.html'を参照せよ)
Geomviewはミネソタ大学のGeometry Centerで開発されたもので、 `http://www.geom.umn.edu/software/download/geomview.html'で入手可能で、 anonymous ftp先は`ftp://ftp.geom.umn.edu/pub/software/geomview/' である。 現時点ではizic程綺麗なものでは無いが、多体、多光源の優れたサポート を持つ。
gnuplotはghostviewと同様にそこらじゅうにある。gnuplotにtclの インターフェイスを持ち、マウスを用いたグラフの回転や拡大が行える mgnuplotを提供している。
izicはzennon.inria.frからftpによって利用可能である。連絡先は {fournier,kajler,mourrain}@sophia.inria.frである。 これは美しいカラーのguraud shadingと非常に表示の速いwireframe表示機能を持ち、 X Window Systemで動作する。
(* 訳者注: Geomviewの最新版はhttp://www.geomview.org/より入手可能。このマニュアルの原文 で指定されたURLは現在でも存在するが、ここでは旧版のみが入手可能である。 又、IZICに関しては最新のTCL/TKに適合したものでは無く、その上、表示色数も256色 である。その為、IZICを無理にでもインストールする価値はあまり無い。 *) |
plot3d(2^(-u^2+v^2),[u,-5,5],[v,-7,7]); |
二番目の引数のパターンの例は
plot3d([cos(x)*(3+y*cos(x/2)),sin(x)*(3+y*cos(x/2)),y*sin(x/2)], [x,-%pi,%pi],[y,-1,1],['grid,50,15]) |
/* REal part of z ^ 1/3 */
plot3d(r^.33*cos(th/3),[r,0,1],[th,0,6*%pi],
['grid,12,80],['plot_format,ps],
['transform_xy,polar_to_xy],['view_direction,1,1,1.4],
['colour_z,true])
|
plot3d([cos(x)*(3+y*cos(x/2)),
sin(x)*(3+y*cos(x/2)),y*sin(x/2)],
[x,-%pi,%pi],[y,-1,1],['grid,50,15]);
|
plot3d([5*cos(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3.0) - 10.0,
-5*sin(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3.0),
5*(-sin(x/2)*cos(y)+cos(x/2)*sin(2*y))],
[x,-%pi,%pi],[y,-%pi,%pi],['grid,40,40])
|
plot3d([cos(y)*(10.0+6*cos(x)),
sin(y)*(10.0+6*cos(x)),
-6*sin(x)], [x,0,2*%pi],[y,0,2*%pi],
['grid,40,40])
|
gnuplotにも出力する事が可能である:
plot3d(2^(x^2-y^2),[x,-1,1],[y,-2,2],[plot_format,gnuplot]) |
時には式の描写を行う関数を定義する必要があるかもしれない。plot3dに渡される 全ての引数はplot3dに渡される前に評価されるので、希望する通りの作業を行う式を 構築する事は難しい事もあるが,関数を構築する事で遥かに簡単なものとなる。
M:MATRIX([1,2,3,4],[1,2,3,2],[1,2,3,4],[1,2,3,3])$ f(x,y):=float(M[?round(x),?round(y)]); plot3d(f,[x,1,4],[y,1,4],['grid,4,4]); |
従って、 SET_PLOT_OPTION([grid,30,40]) |
SET_PLOT_OPTION(['grid,30,40]) |
PLISTに含まれる点を結ぶ曲線を描く。後者は[x0,y0,x1,y1,...]か [[x0,y0],[x1,y1],...]の形式である。
関数JOINはxのリストとyのリストを取り、それらを互いに繋ぎ合せる。 PSDRAW_CURVEは単により原始的な関数PSCURVEを呼び出すだけである。
定義は次のとおり: (defun $psdraw_curve (lis) (p "newpath") ($pscurve lis) (p "stroke")) |
?DRAW2Dもリストを生成する為に用いても良い。
points1:?draw2d(1/x,[.05,10],.03) |
COMはポストスクリプトファイルに挿入される。
例えば、
pscom("4.5 72 mul 5.5 72 mul translate 14 14 scale");
|
| [ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |