公開日: 11/25/2021

プロット関数

YFunction関数は、滑らかな連続関数を描くために使います。最初の引数は、プロットする式です。第2引数は、式の中のX変数の名前です。

win = New Window( "正弦関数",
	Graph Box(
		Frame Size( 200, 100 ),
		X Scale( -10, 10 ),
		Y Scale( -1, 1 ),
		X Name( "x" ),
		Y Name( "Sine(x)" ),
		Y Function( Sine( x ), x ) ) );

図12.32 正弦波 

Sine Wave

Forループを使って、複数の正弦波を重ね合わせることもできます。

win = New Window( "重ね合わせた正弦波",
	Graph Box(
		Frame Size( 200, 100 ),
		X Scale( -10, 10 ),
		Y Scale( -1, 1 ),
		For( i = 1, i <= 4, i += .1,
			Y Function( Sine( x / i ), x )
		)
	)
);

図12.33 重ね合わせた正弦波 

Overlapping Sine Waves

同様に、XFunctionを使うと、y変数の値の変化に従ってxの値が変化するグラフを描くことができます。

win = New Window( "重ね合わせた正弦波",
	Graph Box(
		Frame Size( 100, 200 ),
		X Scale( -1, 1 ),
		Y Scale( -10, 10 ),
		For( i = 1, i <= 4, i += .2,
			X Function( Sine( y / i ), y )
		)
	)
);

図12.34 X軸に沿って重ね合わせた正弦波 

Overlapping Sine Waves along the X-Axis

XY Function()は、XY座標が第3のパラメータによって表現されている計算式(パラメトリック表現されたXY座標の式)を使って滑らかな曲線を描きます。第3変数の値が最小値から最大値へと変化して、XY座標を決めていきます。

win = New Window( "渦巻き",
	Graph Box(
		Pen Color( "red" ); // 線は赤色
		xCenter = 50; // X軸における曲線の中心の位置
		yCenter = 50; // Y軸における曲線の中心の位置
		minAngle = 0;
		maxAngle = Pi() * 2 * 20;
		XY Function(
			xCenter + ((ta / 3) * Cos( ta )),
			yCenter + ((ta / 3) * Sin( ta )),
			ta,
			Min( minAngle ),
			Max( maxAngle ),
			Inc( Pi() / 100 )
		);
	)
);

この例では、Sin()Cos()taを引数(角度)、および倍数(広がり)として使用しています。(Sin()Cos()に指定する角度は、度ではなくラジアンです。)

図12.35 渦巻きのパラメトリック曲線 

Spiral Parametric Plot

ContourFunction()は、2次元空間で3次元の関数を表現するための方法です。最後の引数には、等高線の値を指定します。単一の値や、::を使って作成した等間隔の値の行列、または任意の値の行列を指定できます。

win = New Window( "卵ケースの鳥瞰図",
	Graph Box(
		Frame Size( 300, 300 ),
		X Scale( -10, 10 ),
		Y Scale( -10, 10 ),
		Pen Color( "black" );
		Pen Size( 2 );
		Contour Function( Sine( y ) + Cosine( x ), x, y, (0 :: 20) / 5 );
		Pen Color( "red" );
		Pen Size( 1 );
		Contour Function( Sine( y ) + Cosine( x ), x, y, (-20 :: 0) / 5 );
	)
);

図12.36 卵ケース 

Egg Carton Function

Normal Contour()は、2変量正規分布の等高線を描きます。k個の母集団を指定することができます。最初の引数は、等高線の確率を指定するスカラーまたは行列です。後続の引数は、平均、標準偏差、相関係数を指定する行列です。平均と標準偏差の行列の大きさはk × 2です。相関係数行列の大きさはk × 1で、最初の行は最初の等高線に対応し、2番目の行は2番目の等高線に対応し、以下同様に対応します。最初の列はx、2番目の列はyに対応します。次の例を見てみましょう。

Normal Contour(
	[ prob1,
	  prob2,
	  prob3, ...],
	[ xmean1 ymean1,
	  xmean2 ymean2,
	  xmean3 ymean3, ...],
	[ xsd1 ysd1,
	  xsd2 ysd2,
	  xsd3 ysd3, ...],
	[ xycorr1,
	  xycorr2,
    xycorr3, ...]);

以下のスクリプトは、2母集団の2変量正規分布の累積確率0.1、0.5、0.7、および0.99における等高線を描きます。最初の母集団は、xの平均0、yの平均1、xの標準偏差0.3、yの標準偏差0.6、相関係数0.5です。2つ目の母集団は、xの平均4、yの平均6、xの標準偏差0.8、yの標準偏差0.4、相関係数0.9です。

win = New Window( "正規確率の等高線",
	Graph Box(
		X Scale( -5, 10 ),
		Y Scale( -5, 10 ),
		Normal Contour( [.1, .5, .7, .99], [0 1, 4 6], [.3 .6, .8 .4], [.5, .9] )
	)
);

図12.37 Normal Contour関数 

Normal Contour Function

Normal Contour()を使えば、二変量プラットフォームで描かれる確率楕円を、自分自身で描くことができます。二変量プラットフォームの確率楕円を見るには、サンプルデータの「Football.jmp」を開き、「二変量の関係」のスクリプトを実行してください。

Gradient Function

Gradient Function()は、式で指定された色でグリッド上の長方形を塗りつぶします。

Gradient Function( expression, xname, yname, [zlow, zhigh], 
ZColor( [colorLow, colorHigh] ), <XGrid( min, max, incr )>,
<YGrid( min, max, incr )>, <Transparency( t )>;

Gradient Function()構文の要素の説明を以下に示します。

GradientFunction(
	/* 等高線の式。式は、2変数の
	関数でなければならない */
	Expression,
 
	// 式に含まれている2つの変数の名前
	xname, yname,
 
	// 式の上下限値。この2つの値を補間して色が決められる
	[zlow, zhigh],
 
	// 上限値と下限値それぞれに対応する色
	ZColor([colorLow, colorHigh])
 
// グリッドの指定(オプション)
<XGrid(min, max, incr),>
<YGrid(min, max, incr)> );
 
/* 値0はクリア(透明)を意味する。値1の場合は、完全に不透明
(通常の描画モード)。*/
<Transparency>

ZColor()値は名前ではなく数値コードでなければなりません。色を指定するに記載されているカラー表の番号を使うことができます(0=black(黒)、1=grey(グレー)、2=white(白)、3=red(赤)、4=green(緑)、5=blue(青)など)。

次の例では、Gradient Function()を使ってグラフのアニメーションを作成します。

phase = 0.7;
win = New Window( "Gradient Function",
	a = Graph(
		Frame Size( 400, 400 ),
		X Scale( -5, 5 ),
		Y Scale( -5, 5 ),
		Gradient Function(
			phase * Sine( x ) * Sine( y ) + (1 - phase) * Cosine( x ) * Cosine( y ),
			x,
			y,
			[-1 1],
			zcolor( [0, 2] )
		)
	)
);
b = a[FrameBox( 1 )];
For( i = 1, i <= 5, i++,
	For( phase = 0, phase < 1, phase += 0.05,
		b << Reshow;
		Wait( 0.01 );
	);
	For( phase = 1, phase > 0, phase -= 0.05,
		b << Reshow;
		Wait( 0.01 );
	);
);

図12.38 Gradient Function 

Gradient Function

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).