JMPでポリゴンを外側にオフセットする方法こんにちは、みんな、
JMPでポリゴンを外側にオフセットすることは可能でしょうか?もし可能であれば、やり方を教えていただけますか?
六角形の座標があり、その周囲に距離10のバッファゾーンを描画したいとします。どうすればよいでしょうか?
本当にありがとう
自動化とスクリプトRe: JMPでポリゴンを外側にオフセットする方法元々の六角形はどこから来たのでしょうか?
JMP グラフボックスを使用して作成していますか?
より具体的な詳細は非常に役立ちます
Re: JMPでポリゴンを外側にオフセットする方法こんにちは@txnelson 、
ポリゴンは等高線図から等高線を保存することによって取得されます

等高線を保存した後、XチャートとYチャートをプロットしました。ポリゴンの等高線に沿ってオフセットを描くにはどうすればよいですか?ありがとうございます。

Re: JMPでポリゴンを外側にオフセットする方法JMPでは、「グラフィックスクリプトの追加」を使用して、任意のグラフィック出力にグラフィックを追加できます。スクリプト索引には、オブジェクトの追加方法に関するドキュメントと例が掲載されています。
ヘルプ=>スクリプトインデックス
JSL ではグラフィック プリミティブの完全なセットが利用できます。
以下は、この機能を説明するスクリプトガイドから直接引用した簡単な例です。
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = Bivariate(
Y( :weight ),
X( :height ),
FitLine
);
rbiv = biv << report;
framebox = rbiv[frame box( 1 )];
framebox <<
Add Graphics Script(
Transparency( 0.5 );
Fill Color( {1.0, 0.5, 0.0} );
Polygon( [60, 72, 57], [75, 120, 120] );
);

Re: JMPでポリゴンを外側にオフセットする方法こんにちは@txnelson
あなたのチャートのように、ポリゴンを描くために手動でグラフに数値を入力しています。スクリプトでこれを行う方法はありますか?例えば、
XとYの座標のリストと距離を取得しました。スクリプトで計算するにはどうすればよいでしょうか?
さらに一つ質問があります。等高線グラフをプロットして保存すると、JMPはX座標とY座標を含む表を生成します。
In Polygon (a,b, x 行列, y 行列) のような構文を使用すると、誤った結果が返されるという問題が発生しました。ポリゴン内に点が存在するにもかかわらず、JMP はそれらの点をポリゴン外に返します。
In Polygonを使用する前に、データの並べ替えや処理を実行する必要がありますか?
ありがとう
Re: JMPでポリゴンを外側にオフセットする方法取得したポリゴンをプロットしてみましたか? 予想どおりのように見えますか?
Re: JMPでポリゴンを外側にオフセットする方法「グラフに手動で数値を入力する」とおっしゃっているのは、JSLが特定のポリゴンに対して「ハードコード」されているという意味ではないでしょうか。確かにその通りですが、必ずしもハードコードしなければならないという意味ではありません。JSLは完全なスクリプト言語です。生成したいポリゴンを定義する数値はJSLを使って計算し、Polygon()関数内で使用して表示したいポリゴンを描画できます。表示したい点の周囲10単位のポリゴンを描画したい場合、おそらくすべての値をループ処理し、すべてのx,y値の平均から特定の点までの距離を計算し、その距離に10単位を加算して、その値のx,y点を計算する必要があるでしょう。このような処理です。しかし、これらはすべてJSLで可能です。以下は、最大のx点とy点を含むポリゴンを描画する簡単な例です。
Names Default To Here( 1 );
dt=Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = Bivariate(
Y( :weight ),
X( :height ),
FitLine
);
rbiv = biv << report;
framebox = rbiv[frame box( 1 )];
framebox <<
Add Graphics Script(
Transparency( 0.5 );
Fill Color( {1.0, 0.5, 0.0} );
// Find the max X point and it's y value
maxX = col max(:height);
maxXyvalue = :weight[(dt << get rows where(:height==maxX))[1]];
minX = col min(:height);
minXyvalue = :weight[(dt << get rows where(:height==minX))[1]];
maxY = col max(:weight);
maxYxvalue = :Height[(dt << get rows where(:weight==maxY))[1]];
minY = col min(:weight);
minYxvalue = :Height[(dt << get rows where(:weight==minY))[1]];
polygon((maxX||minX||minYxvalue||maxYxvalue)`, (maxXyvalue || minXyvalue || minY ||maxY)` );
);
