JSL による列プロパティへの仕様制限の設定 - プロットに行が表示されないやあ
仕様制限 (USL/LSL) を列プロパティに割り当て、列のプロットを作成するスクリプトがあります。
プロット上に描かれた限界線を確認します。 テーブル内では制限が正しく設定されていますが、プロット上では表示されません。
スクリプトの実行後に同じプロットをこの列に手動で描画すると、再び線は表示されません。
列仕様プロパティ ウィンドウを開くと、制限が表示され、「参照線の表示」がオンになっています。
「適用」を押してから再度プロットした場合にのみ、予想どおりプロット上に線が表示されます。 しかし、スクリプトで動作させることができません。
何か案が?
(JMP PRO 15使用)


高度な統計モデリング自動化とスクリプト作成データアクセスマスカスタマイゼーション品質およびプロセスエンジニアリングウィンドウズRe: JSL による列プロパティへの仕様制限の設定 - プロットに行が表示されないジム、おかげでうまくいきました。
Re: JSL による列プロパティへの仕様制限の設定 - プロットに行が表示されないこの JSL はうまくいくはずです
// Your code
datacolnames = res_thk_specs:colname << get values;
specExpr = Expr(
Column( Res_Thk_Data, name ) <<
Set Property(
"Spec Limits",
{LSL( Expr( lower ) ), USL( Expr( upper ) ),
TARGET( Expr( target ) ), Show Limits( 1 )}
)
);
For( i = 1, i <= N Rows( RES_THK_SPECS ), i++,
name = Column( RES_THK_SPECS, "COLNAME" )[i];
lower = Column( RES_THK_SPECS, "LSL" )[i];
upper = Column( RES_THK_SPECS, "USL" )[i];
target = Column( RES_THK_SPECS, "TARGET" )[i];
_unit_ = Column( RES_THK_SPECS, "UOM" )[i];
If( Contains( datacolnames, name ),
Eval( Eval Expr( specExpr ) )
);
If( Contains( datacolnames, name ),
Column( Res_Thk_Data, name ) << Set Property( "Units", eval( _unit_ ) )
);
);Re: JSL による列プロパティへの仕様制限の設定 - プロットに行が表示されないジム、ご返信ありがとうございます。実行すると、テーブルに制限が追加されました。私が問題を抱えているのは、列のプロパティに単位を追加することです。コードからコメントを削除すると、単位列のプロパティは入力されますが、インチやポンドなどの必要な値は入力されません。代わりに、両方とも List の値で埋められます。データテーブルのセルからテキストを転送するための式ステートメントまたは評価ステートメントに何が足りないのかがわかりません。何か助けがあれば
感謝。
Re: JSL による列プロパティへの仕様制限の設定 - プロットに行が表示されないコードを使用して動作する簡単な例を次に示します。データテーブルでまだ機能しない場合は、列名との不一致を探してください。
Names Default To Here( 1 );
res_thk_specs = New Table( "thelookup",
Add Rows( 2 ),
New Column( "UOM",
Character,
"Nominal",
Set Values( {"inches", "lbs"} ),
Set Display Width( 48 )
),
New Column( "TARGET",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [60, 115] )
),
New Column( "USL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [70, 172] )
),
New Column( "LSL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [50, 60] ),
Set Display Width( 89 )
),
New Column( "colname",
Character,
"Nominal",
Set Values( {"height", "weight"} ),
Set Display Width( 0 )
)
);
res_thk_data = New Table( "thedata",
Add Rows( 5 ),
New Column( "height",
Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Values( [59, 61, 55, 66, 52] )
),
New Column( "weight",
Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Selected,
Set Values( [95, 123, 74, 145, 64] )
)
);
// Your code
datacolnames = res_thk_specs:colname << get values;
specExpr = Expr(
Column( Res_Thk_Data, name ) <<
Set Property(
"Spec Limits",
{LSL( Expr( lower ) ), USL( Expr( upper ) ),
TARGET( Expr( target ) ), Show Limits( 1 )}
)
);
//unitExpr = Expr(
// column ( Res_Thk_Data, name ) << Set Property(
// "Units", { _unit_ }
// )
//);
For( i = 1, i <= N Rows( RES_THK_SPECS ), i++,
name = Column( RES_THK_SPECS, "COLNAME" )[i];
lower = Column( RES_THK_SPECS, "LSL" )[i];
upper = Column( RES_THK_SPECS, "USL" )[i];
target = Column( RES_THK_SPECS, "TARGET" )[i];
_unit_ = Column( RES_THK_SPECS, "UOM" )[i];
If( Contains( datacolnames, name ),
Eval( Eval Expr( specExpr ) )
);
// If( Contains( datacolnames, name ),
// Eval( Eval Expr( unitExpr ) )
// );
);Re: JSL による列プロパティへの仕様制限の設定 - プロットに行が表示されない非常に似た方法を使用して、制限テーブルから制限を取得し、列のプロパティに仕様制限を追加します。同様の方法を使用して、制限テーブルの値に基づいて単位を更新したいと思いました。現在、コード表示ではコメントアウトされていますが、実行すると、必要なユニットではなく、ユニットプロパティとして「List」の値が表示されます。これは構文の問題だと思いますが、今のところ eval expr ステートメントの正しい構文は見つかりません。
Re: JSL による列プロパティへの仕様制限の設定 - プロットに行が表示されない中括弧を使用することが正しい構文であるように見えるため、中括弧なしでなぜそのように動作するのかわかりませんJMP ヘルプ - 列のプロパティ
col << Set Property( "propertyName", {argument list} );
JMP は内部的に何らかの情報を保存しているに違いありません。中括弧なしでコマンドを実行して列のプロパティをチェックアウトすると、見た目は問題ないように見えますが、[列のプロパティのコピー] を使用すると、最初の引数だけが取得されます (列のリストがないため)。引数):
Add Column Properties(
Set Property("Notes", "Explore data adventurously"),
Set Property("Spec Limits", LSL(50))
)
次に、[仕様制限] 列プロパティで [適用] を押すと、引数が正しいリストに更新されます。
Add Column Properties(
Set Property("Notes", "Explore data adventurously"),
Set Property("Spec Limits", {LSL(50), USL(150), Show Limits(1)})
)Re: JSL による列プロパティへの仕様制限の設定 - プロットに行が表示されないありがとう !確かに中括弧を追加すると問題が解決しました:)
その理由を説明していただけますか
Re: JSL による列プロパティへの仕様制限の設定 - プロットに行が表示されないグラフが最初に表示された後に制限を適用しているようです。制限はチャートが最初に表示されるときに描画され、それ以降に制限が追加された場合は、制限を表示するためにチャートを再描画する必要があります。
Re: JSL による列プロパティへの仕様制限の設定 - プロットに行が表示されない構文が少し違うようです。仕様制限の後に {} を追加する必要があります。 以下のスクリプトを参照してください。適用を押さないと体重は機能しませんが、身長は適用されます。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Column(dt, "weight") << Set Property("Spec Limits", LSL(50), USL(150), Show Limits(1));
Column(dt, "height") << Set Property("Spec Limits", {LSL(50), USL(100), Show Limits(1)});
gb = dt << Graph Builder(
Size(534, 456),
Show Control Panel(0),
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(4)), Smoother(X, Y, Legend(5)))
);Re: JSL による列プロパティへの仕様制限の設定 - プロットに行が表示されない早速の返信ありがとうございます! 列のプロパティで仕様制限が正しく設定されているため、このコードは実際には関連性がないと考えました。
LSL と USL を設定し、制限 (1) を表示しますが、正しく設定されているにもかかわらず、プロットにはそれらが表示されません。
固定数値の単純なコードを使用した場合でも、同じように動作します。
Column(DATA_DT,param) << Set Property( "Spec Limits", LSL( 0.31 ),USL(0.34),Show Limits(1) );

「適用」をクリックしてグラフを再度描画した後にのみ、線が表示されます。
Re: JSL による列プロパティへの仕様制限の設定 - プロットに行が表示されないやあ@shlomi_bakish 、
JSL コードの例を教えていただけますか? これは、発生している問題の診断に役立つ場合があります。 コードのこの部分は、列の仕様制限を設定し、それらがグラフ作成用にオンになっていることを確認する方法の例です。
//Turn on spec lines for graphs
dt = Current Data Table( ); //just a way of setting the current data table to the variable dt
<BR />dt_ColNames = dt << Get Column Names( string ); //Gets the column names from the data table
<BR />For( i = 1, i <= N Items( dt_ColNames ), i++,<BR />
spec = Column( dt, dt_ColNames[i] ) << Get Property( "Spec Limits" ); //This gets the Boolean spec property of each column
<BR />//now, for each column perform the task of assigning the spec limits<BR /> If( Is Empty( spec ) == 0,
LSL = Try( spec["LSL"], . );
USL = Try( spec["USL"], . );
Target = Try( spec["Target"], . );
Eval(
Substitute(
Expr(
Column( dt, dt_ColNames[i] ) << Set Property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
),
),
Expr( __LSL__ ), LSL,
Expr( __USL__ ), USL,
Expr( __Target__ ), Target
)
);//This whole Eval() is wrapping a Substitution(), which wraps an expression Expr(). <BR /> //The variables that will be substituted are __LSL__ and so on. The Show Limits (1) checks the box to turn on the limits as reference lines.
);
);これは、正しい方向に進むのに役立つはずです。 しかし、コードを見て何をしているのかを理解しなければ、正確なニーズに具体的に対応することは困難です。
お役に立てれば!、
DS