分布プロットでグループ化された複数の列をスクリプト化する(図に示すように) 分布でグループ化された複数のパラメーター列をプロットする方法をスクリプト化しようとしています。 私の問題は、コードがパラメータ列ごとに個別の「継続的分布」行を必要とすることです。 私のデータプルでは、実行している内容に応じて、プロットする列名と列数が異なります。 ループしてパラメータごとに個別のプロットを作成するのではなく、その列名のリストを取得して、以下に示すようにグループにプロットする方法がわかりません。
Distribution(
Continuous Distribution( Column( :Parameter1 ) ),
Continuous Distribution( Column( :Parameter2 ) ),
Continuous Distribution( Column( :Parameter3 ) )
);

Re: 分布プロットでグループ化された複数の列をスクリプト化するこの問題に私が対処する方法は次のとおりです
names default to here(1);
dt=open("$SAMPLE_DATA/semiconductor capability.jmp");
colList = dt << get column names(continuous,string);
// For this illustration I want to use just the NPNn columns
for(i=nitems(colList), i>=1,i--,
If(substr(colList[i],1,3)!="NPN", remove from(colList,i,1))
);
// build the JSL string
theExpr =
"Dis = Distribution(
Continuous Distribution( Column( :" || colList[1] || " ),
Process Capability( Use Column Property Specs ) )";
For( i = 2, i <= N Items( colList ), i++,
theExpr = theExpr || "," || "Continuous Distribution( Column( :" || colList[i] ||
" ), Process Capability( Use Column Property Specs ) )"
);
theExpr=theExpr||");";
// run the built JSL string
eval(parse(theexpr));
// Standardize the settings
disr = Dis << report;
disr[colList[1]]["Quantiles"]<<CLOSE all="" like="" this=""></CLOSE>Re: 分布プロットでグループ化された複数の列をスクリプト化するすべてはアプリケーションから始まるという私の思い込みが、私に大きな苦痛を与えていると思います。
もう 1 つの質問ですが、次のプロパティを設定したい場合は、全てここでこの 1 つの変数を使用して行ったように、レポート内の分布「T05066DD ET_DELTA 比率」それを行うための簡単なコマンドはありますか、それとも for ループを構築してリスト内の各変数に対して「sendtoreport」を実行する必要がありますか?
ET_DELTA_List = {};<BR />dist = dt << Distribution(Columns(evalList(ET_DELTA_List)));
dist << arrange in rows(5);
dist << Quantiles(0);
dist << Summary Statistics(0);
report(dist)[OutlineBox(2)] << Open all like this(1);
//show properties(dist)
dist << SendToReport(
Dispatch(
{"T05066DD ET_DELTA Ratio"},//this is one of many distributions. i would like to set the following properties to all the distributions in the report
"1",
ScaleBox,
{Min( -5 ), Max( 5 ), Inc( 5000 ), Minor Ticks( 1 ),
Add Ref Line( 2, "Solid", "Black", "", 1 ),
Add Ref Line( -2, "Solid", "Black", "", 1 )}
)
)</CODE></P><P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-277293" slang="en-US" mode="NONE">Re: 分布プロットでグループ化された複数の列をスクリプト化する</LINGO-SUB><LINGO-BODY id="lingo-body-277293" slang="en-US" mode="NONE"><P>それをアプリケーションに配置するオーバーヘッドを回避するだけです。</P></LINGO-BODY><LINGO-SUB id="lingo-sub-277279" slang="en-US" mode="NONE">Re: 分布プロットでグループ化された複数の列をスクリプト化する</LINGO-SUB><LINGO-BODY id="lingo-body-277279" slang="en-US" mode="NONE"><P>わかりました、ありがとう。</P><P>これを行うための戦略は何ですか? アプリケーションビルダーを使用して割り当てなどを行うのを避け、スクリプトを使用してすべてを配置しますか?</P><P>再度、感謝します</P><P>ウェイン。</P></LINGO-BODY><LINGO-SUB id="lingo-sub-277090" slang="en-US" mode="NONE">Re: 分布プロットでグループ化された複数の列をスクリプト化する</LINGO-SUB><LINGO-BODY id="lingo-body-277090" slang="en-US" mode="NONE"><P>簡単に言うと「いいえ」です。少なくとも、JMP アプリのコードをすべて含む文字列を作成する必要があります。</P></LINGO-BODY><LINGO-SUB id="lingo-sub-277077" slang="en-US" mode="NONE">Re: 分布プロットでグループ化された複数の列をスクリプト化する</LINGO-SUB><LINGO-BODY id="lingo-body-277077" slang="en-US" mode="NONE"><P>これをローカル データ フィルターを使用してアプリケーションに組み込みたい場合、Allocate ステートメントを Eval(Parse) 内に置くことができますか?</P><P>それで..</P><PRE><CODE class=" language-jsl">theExpr = "dis = Allocate(
Border1 = Border Box();
DataFilterContext1 = Data Filter Context Box();
List1 = H List Box();
DataFilter1 = Dt << Data Filter( Local );
Report1 = Platform(
Dt,
Distribution(
Continuous Distribution( column( column(Dt, colNames[1])))";
For( i = 2, i <= N Items( colNames ), i++,
theExpr = theExpr || ", Continuous Distribution( column( column(Dt, colNames[" || Char( i ) || "])))"
);
theExpr = theExpr || " )
);
)";
show(theexpr);
Eval( Parse( theExpr ) );
Re: 分布プロットでグループ化された複数の列をスクリプト化する必要なのは、要件を満たすように列名のリストを変更することだけです。これを行うには多くの方法がありますが、以下にその一例を示します
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// Get the all of the numeric, continuous column names
colNames = dt << get column names( string, continuous );
// Work backwards through the list of columns eliminating those that
// do not meet the pattern one is interested in
For( i = N Items( colNames ), i >= 1, i--,
If( left( colNames[i], 3 ) != "NPN" , colNames = remove( colNames, i, 1 ) );
);
// Build a character string that represents the commands that need to be run
theExpr = "dis = dt << Distribution(
Continuous Distribution( column( column(dt, colNames[1])))";
// Loop across the remaining columns in the colNames list and generate the continuous distribution
// commands
For( i = 2, i <= N Items( colNames ), i++,
theExpr = theExpr || ", Continuous Distribution( column( column(dt, colNames[" || Char( i ) || "])))"
);
// place the closing ")" to complete the command string
theExpr = theExpr || ");";
// Execute the code generated and placed into the character string variable
Eval( Parse( theExpr ) );
Re: 分布プロットでグループ化された複数の列をスクリプト化する@txnelsonこのスクリプトを使用しましたが、うまくいきました。 私がやろうとしているのはレポートを自動化することですが、データテーブルは300以上の列で構成されており、列の数は週ごとに異なります。 ex で始まる列名があります。 "Fail1"、"Fail2"、、、"Total1"、"Total2"、、、"Yield1"、"Yield2"、、、"Loss1"、"Loss2"、、。たとえば「Loss1」、「Loss2」などの連続分布を表示するようにフィルタリングするにはどうすればよいですか?
Re: 分布プロットでグループ化された複数の列をスクリプト化する@RonSwanson 、
ジム@txnelsonのスクリプトは、より詳細な制御と解決策を提供します。 未知の数のディストリビューションを簡単にスクリプト化する方法をよく尋ねられるので、これは代替オプションです。このスクリプトには、ディストリビューションを「ラップ」するコマンドと、オブジェクト (能力分析メッセージ) にメッセージを送信してすべてのディストリビューションにメッセージを送信する方法と、リビール アイコンにメッセージを送信する方法も含まれています。
Names default to Here(1);
dt = Open("$Sample_Data/Semiconductor Capability.jmp");
cnames = dt << get column names("Continuous", "string");
//Here I will just use 10
cnames = cnames[1::10];
dist = dt << Distribution(Columns(evalList(cnames)));
//if you want to limit the number per row
dist << arrange in rows(3); //change 3 to 5 or whatever you want
dist << Capability Analysis(0); //turn off the distribution
report(dist)[OutlineBox(2)] << Open all like this(1); //reveal all distributions
report(dist)[OutlineBox(2)] << Close all like this(1); //do not reveal

Re: 分布プロットでグループ化された複数の列をスクリプト化するまさに私が必要としていたもの...ありがとうtx!!Re: 分布プロットでグループ化された複数の列をスクリプト化する必要なものを生成するために必要なコードを生成する 1 つの方法は次のとおりです
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
// Get the all of the numeric, continuous column names
colNames = dt << get column names( string, continuous );
// Build a character string that represents the commands that need to be run
theExpr = "dis = dt << Distribution(
Continuous Distribution( column( column(dt, colNames[1])))";
// Loop across the remaining columns in the colNames list and generate the continuous distribution
// commands
For( i = 2, i <= N Items( colNames ), i++,
theExpr = theExpr || ", Continuous Distribution( column( column(dt, colNames[" || Char( i ) || "])))"
);
// place the closing ")" to complete the command string
theExpr = theExpr || ");";
// Execute the code generated and placed into the character string variable
Eval( Parse( theExpr ) );