JSLを使って、JMPのグラフに多角形や等高線を描くことができます。
Polygon()は、Line()と同様に点をつなげます。Polygon()は、さらに最後の点と最初の点を結んで多角形を閉じ、多角形の内部を塗りつぶします。各点の座標は、2項目のリストで個々に指定する(マーカーを描く)ことも、x座標とy座標の行列で指定することもできます。行列の値は、1行目から順番に使われていくので、要素の数が同じであれば、行ベクトルと列ベクトルのどちらでも使用できます。次のスクリプトでは、点の行列を設定した後で、その行列をPolygon()に指定しています。
gCoordX = [25, 23.75, 22.5, 21.25, 21.25, 22.5, 23.75, 25.625, 27.5, 18.75, 12.5, 6.25, 2.5,
1.25, -1.25, 3.125, 6.25, 12.5, 18.75, 25, 29.375, 34.375, 37.5, 38.75, 40.625, 42.5, 43.125,
42.5, 41.25, 38.75, 43.75, 50, 56.25, 60.625, 63.75, 65.625, 62.5, 56.25, 50, 45, 37.5, 32.5,
28.75, 27.5, 26.25, 25.625, 25];
gCoordY = [-2, 2, 5, 10, 15, 20, 25, 30, 33, 34, 35, 37.5, 40, 41, 43.5, 41, 40, 39, 40, 42, 45,
50, 55, 60, 64, 60, 55, 50, 47, 42, 43.5, 43, 42, 40, 38, 36, 37, 37, 36, 35, 30, 25, 20, 15, 10, 5, 2];
win = New Window( "JMPマン",
Graph Box(
Frame Size( 300, 300 ),
X Scale( -10, 80 ),
Y Scale( -10, 80 ),
Pen Color( "Black" );
Fill Color( "Blue" );
Polygon( gCoordX, gCoordY );
Fill Color( "Black" );
Circle( {18, 58}, 9, "FILL" );
)
);
図12.17 多角形を描く
関連したコマンドのIn Polygon()は、与えられた点が、指定された多角形の中に入るかどうかを知らせます。次のコードでは、いくつかの点がFigure 12.17のJMPマン内にあるかどうかを調べています。
In Polygon( 0,60, GcoordX,GCoordY ); // 0を戻す
In Polygon( 30,38, GcoordX,GCoordY ); // 1を戻す
In Polygon()をJMPマンのスクリプトに追加することもできます。次のスクリプトを実行し、グラフ内のさまざまな位置をクリックして、ログウィンドウを確認してください。体の部分をクリックすると、ログに「In」と「out」が出力されます。
gCoordX = [25, 23.75, 22.5, 21.25, 21.25, 22.5, 23.75, 25.625, 27.5, 18.75, 12.5, 6.25, 2.5, 1.25, -1.25, 3.125, 6.25, 12.5, 18.75, 25, 29.375, 34.375, 37.5, 38.75, 40.625, 42.5, 43.125, 42.5, 41.25, 38.75, 43.75, 50, 56.25, 60.625, 63.75, 65.625, 62.5, 56.25, 50, 45, 37.5, 32.5, 28.75, 27.5, 26.25, 25.625, 25];
gCoordY = [-2, 2, 5, 10, 15, 20, 25, 30, 33, 34, 35, 37.5, 40, 41, 43.5, 41, 40, 39, 40, 42, 45, 50, 55, 60, 64, 60, 55, 50, 47, 42, 43.5, 43, 42, 40, 38, 36, 37, 37, 36, 35, 30, 25, 20, 15, 10, 5, 2];
win = New Window( "JMPマン",
Graph Box(
Frame Size( 300, 300 ),
X Scale( -10, 80 ),
Y Scale( -10, 80 ),
Pen Color( "Black" );
Fill Color( "Black" );
Polygon( gCoordX, gCoordY );
Mousetrap(
{},
Print( If( In Polygon( x, y, gCoordX, gCoordY ), "in", "out" ) )
);
)
);
Contour()は、座標のグリッドを使ってJMPのグラフに等高線を描きます。
Contour( xVector, yVector, zGridMatrix, zContour, <zColors> );
n個の要素をもつxVectorと、m個の要素をもつyVectorで定義されたグリッドに、n × m行列のzGridMatrixで表される曲面があるとします。Contour()は、zContourの値で指定された等高線を、zColorsで指定された色で描きます。以下はその例です。
x = (-10 :: 10) / 5;
y = (-12 :: 12) / 5;
grid = J( 21, 25, 0 );
z = [-.75, -.5, -.25, 0, .25, .5, .75];
zcolor = [3, 4, 5, 6, 7, 8, 9];
For (i = 1, i <= 21, i++,
For( j = 1, j <= 25, j++,
grid[i, j] = Sin( (x[i]) ^ 2 + (y[j]) ^ 2 )
)
);
Show( grid );
win = New Window( "ハット",
Graph Box(
X Scale( -2, 2 ),
Y Scale( -2.4, 2.4 ),
Contour( x, y, grid, z, zcolor )
)
);
図12.18 等高線を描く