JSL経由で列から制限を取得し、それを他の列に使用するにはどうすればよいですか?添付のデータ表には、それぞれの列に測定された各パラメーター (電流、抵抗) の制限値 (LSL/USL) があります。
データ テーブルの形式を変更せずに、たとえば中央値が PartID に対してプロットされる場合 (添付のデータ テーブルのスクリプトのように)、各パラメーターの制限を参照線として表示するにはどうすればよいですか?
これを行う方法の 1 つは、各パラメータの列プロパティに LSL/USL を保存することですが、これには JSL のヘルプが必要です。
ウィンドウズRe: 列から制限を取得し、それを JSL 経由で他の列に使用するにはどうすればよいですか?最も簡単な (そして私の意見では、最も良いのは) テーブル形式を変更することですが、それはできないため、他のオプションは列プロパティ (制限には制限があるため、これは少し奇妙です) またはグラフィック スクリプトを使用することになります。 。 まず、各列の考えられるすべての制限を収集する必要があります (同じ列に異なる制限が存在する可能性がありますか?)。これには要約が非常にうまく機能するはずです。次に、選択に応じて、then を列のプロパティとして追加するか、then を使用します。グラフィックスクリプト付き。
Re: 列から制限を取得し、それを JSL 経由で他の列に使用するにはどうすればよいですか?これが私があなたのテーブルを扱う方法です。すべての USL 値と LSL 値が各列の列プロパティに移動され、列をグラフ化するときに制限が自動的に表示されます。

Names Default To Here( 1 );
dt = Current Data Table();
colNamesList = dt << get column names( string, numeric );
For Each( {col}, colNamesList,
LSL = Column( col )[(dt << get rows where( :Label == "LSL" ))[1]];
USL = Column( col )[(dt << get rows where( :Label == "USL" ))[1]];
Eval(
Substitute(
Expr(
Column( col ) << set property(
"spec limits",
{LSL( _LSL_ ), USL( _USL_ ), Show Limits( 1 )}
)
),
Expr( _USL_ ), USL,
Expr( _LSL_ ), LSL
)
);
);
// Uncomment the below 2 lines to delete the LSL and USL rows in the table
//dt << select where(:Label == "LSL" | :Label=="LSL");
//dt << delete rows;
Graph Builder(
Size( 570, 578 ),
Variables( X( :partID ), Y( :Current ), Y( :Resistance ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 8 ), Jitter( "None" ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 6 ), Jitter( "None" ) ) ),
Local Data Filter( Add Filter( columns( :Label ), Where( :Label == {"Median"} ) ) )
);
Re: 列から制限を取得し、それを JSL 経由で他の列に使用するにはどうすればよいですか?@txnelson @jthi
ありがとう、今あなたの解決策を試してみます。 同様のことをしたかったのですが、次の関数を機能させることができません。 アイデアは、テストされたすべてのパラメーター列をグループ化した後、これを列グループに適用することです。 1 つのテスト済みパラメーター (現在) 列に対して試しましたが、機能しませんでした。 制限として数値が渡される場合は正常に動作しますが、変数が渡される場合は正常に動作しません。 どこで間違ったのでしょうか(Eval()とExpr()を使用したり使用したりしませんでした)。
Names Default To Here( 1 );
setSpecLimits = Function( {dt_ref, colName, _LSL, _USL},
{specLimits},
tmp = Eval( Expr( dt_ref:colName << Set Property( "Spec Limits", {LSL( _LSL ), USL( _USL ), Show Limits( 1 )} ) ) );
Return( specLimits ); //optional
);
////Check
Clear Log();
//test before
specLims = Data Table( "exampleData" ):Current << Get Property( "Spec Limits" ); Show( specLims );
//New values
_LSL = Data Table( "exampleData" ):Current[2]; Show( _LSL );
_USL = Data Table( "exampleData" ):Current[3]; Show( _USL );
dt_ref = Data Table( "exampleData" ); show (dt_ref);
colName = "Current"; Show( colName );
//call function
setSpecLimits( dt_ref, colName, _LSL, _USL );
//test after
specLims = Data Table( "exampleData" ):Current << Get Property( "Spec Limits" ); Show( specLims );
Re: 列から制限を取得し、それを JSL 経由で他の列に使用するにはどうすればよいですか?これで問題は解決するはずです
setSpecLimits = Function( {dt_ref, colName, _LSL, _USL},
{specLimits},
tmp = Eval(
eval Expr(
dt_ref:colName << Set Property( "Spec Limits", {LSL( expr(_LSL) ), USL( expr(_USL ) ), Show Limits( 1 )} )
)
);
Return( specLimits ); //optional
);Re: 列から制限を取得し、それを JSL 経由で他の列に使用するにはどうすればよいですか?の代わりに代わりの、も使用できますEval (Eval Expr( ...Exp())) :
Eval(EvalExpr(dt_ref:colName << Set Property( "Spec Limits", {LSL(Expr(_LSL )), USL(Expr( _USL) ), Show Limits( 1 )} )))仕様制限を事前評価するには_LSL & _USL彼らは中にいなければなりません式()経由で事前評価を受けますEval Expr() 。
そうした後、式全体を次のように評価できます。 Eval()
Re: 列から制限を取得し、それを JSL 経由で他の列に使用するにはどうすればよいですか?@txnelsonありがとう。 Eval Expr () がその役目を果たします。
仕様参照線を破線に変更し、破線の色を赤に変更するにはどうすればよいですか?
Re: 列から制限を取得し、それを JSL 経由で他の列に使用するにはどうすればよいですか?GUI を使用することもできます。

Re: 列から制限を取得し、それを JSL 経由で他の列に使用するにはどうすればよいですか?またはJSL:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt:height << Set Property("Spec Limits",{LSL( 57 ), USL( 67 )});<BR /><BR /><BR />
gb = dt << Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) ),
);
specs=dt:height << Get Property("Spec Limits");
LSL=specs["LSL"];
USL=specs["USL"];
report(gb)[ScaleBox(1)] <<{ Add Ref Line( LSL, "Dashed", "Red", "LSL", 1 ),
Add Ref Line( USL, "Dashed", "Red", "USL", 1 )}Re: 列から制限を取得し、それを JSL 経由で他の列に使用するにはどうすればよいですか?@ホギありがとう。 仕様制限が定義されて列のプロパティに保存され、JMPによって自動的にプロットされるときに、実線を破線とデフォルトの色に変更するJSLの方法を探していました(投稿3のように) @txnelson )。
Re: 列から制限を取得し、それを JSL 経由で他の列に使用するにはどうすればよいですか?仕様限界の「限界の表示」機能を使用すると、青色の実線のみが表示されます。JSL を使用して色、ラベル、線種などを指定して制限を表示したい場合は、メッセージを使用するコードを記述する必要があります。
obj << add ref line(......);
能力。
説明と例については、「スクリプト索引」を参照してください。
Re: 列から制限を取得し、それを JSL 経由で他の列に使用するにはどうすればよいですか?最初は少し「がっかり」します。この素晴らしい「制限を表示」機能を使用すると、なぜ色を変更できないのでしょう。
しかし実際には、GUI を使用すればそれが可能です。 ただ使用してください制限を表示(1)軸の設定に進みます。
そしてその一方で:
JSL 経由で色を変更したい場合は、追加の小さなコードを追加します。追加色を変えながらの線はあまり心に残りませんよね?
環境設定でデフォルトの色/線スタイルを設定することを考えることもできます。
完全に自動 - JSL なし - 手動変更なし - 必要な行だけを追加します。