グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることができますか?以下のスクリプトは、グラフ ビルダーで P で始まる列名を持ついくつかの列 (Y 軸上の複数のパラメーター) をプロットします。 次のページに列名が N で始まる他のいくつかの列を同時にプロットしたいと考えています (コマンドは以下のスクリプトでコメントされています)。
次のページでは、V などで始まる列名を持つ他のいくつかの列をプロットしたいと思います。
列カテゴリ情報は、別のデータ テーブルまたは他の形式 (おそらくリスト) で事前定義できます (これについては柔軟に対応します)。 問題は、これが JSL 経由で実行できるかどうか、また実行できる場合はどのように実行できるかということです。
Names Default To Here (1);
clear log ();
dt = open( "$SAMPLE_DATA\semiconductor capability.jmp" );
dt << Ungroup Columns();
Graph Builder(Size( 1469, 718 ),
Variables(X( :lot_id ), Y( :PLG2 ), Y( :PNP4 ), Y( :PNP3 ), Y( :PNP2 ), Y( :PNP1 )),
//Page(:ColumCategory)
Elements( Position( 1, 1 ), Box Plot( X, Y, Legend( 14 ) ) ),
Elements( Position( 1, 2 ), Box Plot( X, Y, Legend( 12 ) ) ),
Elements( Position( 1, 3 ), Box Plot( X, Y, Legend( 11 ) ) ),
Elements( Position( 1, 4 ), Box Plot( X, Y, Legend( 9 ) ) ),
Elements( Position( 1, 5 ), Box Plot( X, Y, Legend( 10 ) ) ),
);
自動化とスクリプト作成ウィンドウズRe: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?ページは行ベースのグループ化に使用されるため、目的の目的には使用できません。 各グループごとに列のリストを作成し、たとえば V リスト ボックスを使用して別のグラフ ビルダーを新しいウィンドウに追加しながら、そのリストをループすることができます。
Re: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?データ テーブルを再フォーマットしても役に立ちません。個々の Y グループにはすべての項目が表示されます。

列のサブグループを分割するだけの場合は、データフィルターの代わりにページ:

Names Default To Here (1);
clear log ();
dt = open( "$SAMPLE_DATA\semiconductor capability.jmp" );
dt << Ungroup Columns();
dtstacked = dt << Stack(
columns(
:NPN1, :PNP1, :PNP2, :NPN2, :PNP3, :IVP1, :PNP4, :NPN3, :IVP2, :NPN4, :SIT1,
:INM1, :INM2, :VPM1, :VPM2, :VPM3
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
"Non-stacked columns"n( Keep( :lot_id, :wafer, :Wafer ID in lot ID, :SITE ) )
);
dtstacked << new column("first_Label", Formula( Left( :Label, 1 ) ));
dtstacked << Graph Builder(
Size( 571, 449 ),
Show Control Panel( 0 ),
Fit to Window,
Variables(
X( :lot_id ),
Y( :Data ),
Page( :first_Label ),
Group Y( :Label ),
Color( :Label )
),
Elements( Box Plot( X, Y, Legend( 16 ) ) ),
Local Data Filter(
Add Filter(
columns( :first_Label ),
Where( :first_Label == "N" ),
Display( :first_Label, N Items( 5 ) )
)
)
)Re: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?@ホギ@jthiわかりました。 ありがとう。 別のアイデアとしては、ジャーナル ウィンドウにプロットされた列のセットを含む最初のグラフ ビルダー ウィンドウを配置/送信し、次の新しい列のセットを最初のウィンドウの下にプロットし、というようにしてから、開いているグラフ ウィンドウと関連するデータ テーブルを閉じることです。 JSL経由でこれを行うにはどうすればよいですか?
Re: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?関心のある列を含むリストのリストを作成し、それをループしながらグラフ ビルダーを構築し、それらをジャーナル/v リスト ボックスに追加します。 すべての列のサイズは同じですか、それとも Y 軸の量は変わりますか?
Re: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?ここにオプションが 1 つありますが、使用できるのはこれだけではありません
Names Default To Here(1);
create_graph = Function({dt, ycollist}, {Default Local},
vlb = V List Box(
gb = dt << Graph Builder(Variables(X(:lot_id)))
);
For Each({colname, idx}, ycollist,
gb << Add Variable({Eval(colname), Role("Y")});
gb << Add Element(1, idx, {Type("Box Plot"), X, Y}); // define boxplots
gb << Remove Element(1, idx, 1); // remove points
);
return(vlb);
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open("$SAMPLE_DATA\semiconductor capability.jmp");
// could also just create journal and add new_vlb to that
nw = New Window("Collector",
vlb = V List Box()
);
For Each({my_group}, my_groups,
new_vlb = create_graph(dt, my_group);
vlb << Append(new_vlb);
);
nw << journal;
nw << Close Window;
my_j = Current Journal();
Write();Re: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?ケース/グループごとに異なる列がある場合は、JSL を追加して、変更ごとに「my_group」の値を変更する必要があります。
おそらく、現在の For Each( {my_group) の外側に追加の For Each() を追加することでこれを行うことができます。現在の For Each() に戻る前に、my_group の値を変更します。
試してみて、さらに問題が発生した場合は、コミュニティに戻って質問することをお勧めします。
Re: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?@jthi Y 軸にプロットされる列の数は、ケース/グループごとに異なります。
Re: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?@jthi @txnelsonありがとう。
プロットするパラメータは次の表のようにグループ化されています。 目的は、ジャーナル内で各グループを他のグループの下に追加することです。 また、グループエントリーをそれぞれのチャートタイトルにしたいと思います。この場合、上記の JSL を変更するにはどうすればよいでしょうか?

Re: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?あなたの場合、キーがグループ名になり、値がパラメータのリスト(列)になる連想配列を使用します。 次に、ジャーナルを作成しながら、For Each を使用してこの連想配列をループします。
Re: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?@txnelson @ほぎ。 ご提案いただきありがとうございます。 少し休憩した後、この話題に戻ります。
@jthiスクリプトのこの部分を JMP 16.2 で実行する
Names Default To Here(1);
create_graph = Function({dt, ycollist}, {Default Local},
vlb = V List Box(
gb = dt << Graph Builder(Variables(X(:lot_id)))
);
For Each({colname, idx}, ycollist,
gb << Add Variable({Eval(colname), Role("Y")});
gb << Add Element(1, idx, {Type("Box Plot"), X, Y}); // define boxplots
gb << Remove Element(1, idx, 1); // remove points
);
return(vlb);
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open("$SAMPLE_DATA\semiconductor capability.jmp");
// could also just create journal and add new_vlb to that
nw = New Window("Collector",
vlb = V List Box()
);
For Each({my_group}, my_groups,
new_vlb = create_graph(dt, my_group);
vlb << Append(new_vlb);
);与える

つまり
{"PNP1", "PNP2", "PNP3"} そして
{"NPN3", "NPN2", "NPN1", "NPN4"}最初の投稿で述べたように、これらは Y 軸上にプロットされておらず (つまり、仕様限界参照線が表示されて上下に並んでいます)、2 つの別々のチャートにプロットされていません。
上で述べたように、プロットするパラメータは次の別の表のようにグループ化されています。
Names Default To Here( 1 );
dtg = New Table( "Parameter Groups",
Add Rows( 11 ),
New Column( "Parameter", Character, Nominal,
Set Values( {"PNP1", "PNP2", "NPN2", "NPN3", "INV2", "NPN1", "PNP3", "NPN4", "INV3", "PNP6", "INV4"} ) ),
New Column( "Group", Character, Nominal, Set Values( {"DC", "DC", "AC","AC","RF","AC","DC","AC", "RF", "DC", "RF"} ) )
);各グラフのパラメータを、上の表の「グループ」列のエントリによってグループ化したいと考えています。
たとえば、上部プロットには次のタイルがあります。直流と「PNP1」「PNP2」「PNP3」「PNP6」 Y 軸にプロットされ、その下にタイトル付きの次のグラフが表示されます。交流と「NPN2」、「NPN3」、「NPN1」そして「NPN4」がプロットされ、最後にタイトル付きの下部の 3 番目のチャート「RF」と「INV2」と「INV4」 " が y 軸にプロットされます。
連想配列のアプローチについてアドバイスをもらって続行できますか? このようにして、ユニークなものを取得できますグループ、しかし、関連付けられたものを取得する方法パラメータ (Get Rows Where () を使用) ?
gg = Associative Array (dt:Group);
gg << get keys;
( @jthi 、私はジャーナルに加えて「コレクター」ウィンドウオプションを好みます。これは、見たいものに応じてより柔軟に対応できるためです)
Re: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?JMP 16 を使用すると、発生している問題を再現することができました。変数の追加などを使用して希望の結果を得ることができませんでした。ただし、グラフ ビルダー JSL を文字列変数に作成して実行する手法を使用することで、箱ひげ図を取得することができました。

Names Default To Here( 1 );
create_graph = Function( {dt, ycollist},
{Default Local},
theExpr =
"vlb = V List Box(
gb = dt << Graph Builder(Size( 1469, 718 ),Variables(X(:lot_id)";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Y(:\!"" || colname || "\!"n)"
);
theExpr = theExpr || ")";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Elements( Position( 1," || Char( idx ) ||
" ), Box Plot( X, Y) ) "
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );
Return( vlb );
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// could also just create journal and add new_vlb to that
nw = New Window( "Collector", vlb = V List Box() );
For Each( {my_group}, my_groups,
new_vlb = create_graph( dt, my_group );
vlb << Append( new_vlb );
);Re: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?@txnelsonこれは 16.2 で機能します (JMP は構文エラーを訴えますが、チャートは表示されます)。
別のリストがある場合
paraGroupList = {"DC", "AC"};割り当て方法直流チャートタイトルとして(現在はPNP1 および 2 と Lot_id の比較) プロット時 (上のグラフ)
{"PNP1", "PNP2", "PNP3"}そして交流チャートタイトルとして(現在はNPN3 とその他 3 対 Lot_id )プロットするとき(下のグラフ)?
{"NPN3", "NPN2", "NPN1", "NPN4"}Re: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?グラフを実行します。
タイトルをクリックして変更します。
次に、赤い三角形に移動し、スクリプトの保存を選択します。
スクリプトを見ると、JSL とそれによってタイトルがどのように変更されたかがわかります。
それをスクリプトに採用してください。
時間をかけてスクリプト ガイドを読むことを強くお勧めします。JSL の学習をスピードアップします
Re: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?@txnelsonありがとう、グラフのタイトルの付け方がわかりました。
そこから抜け出す方法グラフの作成if 関数イコリスト空いていますか?
Re: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?Length() 関数を使用してリストにエントリがあるかどうかを確認し、コードをバイパスします。
Re: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?@txnelsonありがとう。使えないようです壊す () for ループ内で使用される場合は、プロット関数内で。 どのような選択肢があるのか見ていきます。
Re: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?必要な評価を行うだけで、評価が満たされない場合はコードをバイパスします。以下を参照してください:
Names Default To Here( 1 );
create_graph = Function( {dt, ycollist},
{Default Local},
theExpr =
"vlb = V List Box(
gb = dt << Graph Builder(Size( 1469, 718 ),Variables(X(:lot_id)";
For Each( {colname, idx}, ycollist,
If( Length( colname ) != 0,
theExpr = theExpr || ",Y(:\!"" || colname || "\!"n)"
);
theExpr = theExpr || ")";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Elements( Position( 1," || Char( idx ) ||
" ), Box Plot( X, Y) ) "
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );
);
Return( vlb );
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// could also just create journal and add new_vlb to that
nw = New Window( "Collector", vlb = V List Box() );
For Each( {my_group}, my_groups,
new_vlb = create_graph( dt, my_group );
vlb << Append( new_vlb );
);Re: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?@txnelsonありがとう。 スクリプトを実行すると、(JMP 16.2 上で) エラーが発生し、取り除くことができません。

Re: グラフビルダーでプロットされる列は、列名カテゴリを使用してページで区切ることはできますか?すみません、急いで前の回答に戻ってしまいました。以下の JSL は、my_group が空の場合、グラフの作成をバイパスします。
Names Default To Here( 1 );
create_graph = Function( {dt, ycollist},
{Default Local},
theExpr =
"vlb = V List Box(
gb = dt << Graph Builder(Size( 1469, 718 ),Variables(X(:lot_id)";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Y(:\!"" || colname || "\!"n)"
);
theExpr = theExpr || ")";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Elements( Position( 1," || Char( idx ) ||
" ), Box Plot( X, Y) ) "
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );
Return( vlb );
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// could also just create journal and add new_vlb to that
nw = New Window( "Collector", vlb = V List Box() );
For Each( {my_group}, my_groups,
If( Length( my_group ) != 0,
new_vlb = create_graph( dt, my_group );
vlb << Append( new_vlb );
vlb = V List Box();
)
);