JSL - 異なる変数を含む列をループする -xy プロットを生成する
ごきげんよう、
背景: 半導体デバイスの特定の RF テストの出力である非常に大規模なデータセットがあります。 この RF テストでは、重要なさまざまな条件が存在します。 3 つの出力があり、16 の異なるチャネルで 6 つの異なるテスト状態でテストされるため、105 の異なるグラフを生成する必要があります。
例: テスト状態 1 でのチャネル 1 のゲインと周波数。 15 のチャネルと 6 つのテスト状態があるテスト状態 1 でのチャネル 2 のゲインと周波数。
解決策を求めてこれらのディスカッション掲示板を検索し、たどり着いたクローゼットは、2017 年に開始された「」というタイトルのスレッドです。 JMP グラフを JSL で PPT にエクスポートするにはどうすればよいですか?」
私を助けるためにこのソリューションで使用されているスクリプトを組み込もうとしましたが、必要な数のプロットを作成することはできますが、フィルターで除外する特定のチャネルを取得できません。
これを伝えるのは難しいと思いますので、説明が必要な場合は質問してください。
ありがとう
Summarize( dt, lstChannel = By( :channel ) );
gb = Graph Builder(
invisible,
Size( 1225, 952 ),
Show Control Panel( 0 ),
Variables(
X( :Name( "Freq _(GHz)" ) ),
Y( :Gain ),
Group X( :wafer_num ),
Overlay( :RowCol ) ),
Elements( Smoother( X, Y, Legend( 19 ) ) )
);
For( i = 1, i <= N Items( GroupBy ), i++,
gb << Local Data Filter(
columns(
:wafer_num,
:channel,
:RowCol),
Where( :channel == LstChannel[i] ) ),
// I would like to loop through the teststates as well
Where( :teststate == 1 ),
Mode( Show( 1 ), Include( 1 ) ) );
If( i == 1,
gb << Save Presentation( "$TEMP/jmp_example2.pptx" ),
gb << Save Presentation( "$TEMP/jmp_example2.pptx", Append )
);
gb << remove data filter;
);
Open( "$TEMP/jmp_example2.pptx" );Re: JSL - 異なる変数を含む列をループする -xy プロットを生成する残りの2つは付いてなかったと思います
Re: JSL - 異なる変数を含む列をループする -xy プロットを生成するいつも分かりやすい情報をありがとうございます。 あなたが私を一番助けてくれたのは、本当に幸運だったと思います。 私は、非常に多品種少量の製品を扱う鋳造工場の工業エンジニアであり、かなりの量の RF テストを行っています。 あなたが言及したすべて:
- 管理限界や仕様限界などの既知の範囲があり、
- +/- k シグマのようなものにスケールする必要があります。
- グリッド線を制御する必要がある場合、たとえば、0.5 シグマごとにグリッド線を制御する必要があります。
- 公称値が大きいが変動が非常に小さいデータ、たとえば、平均値が 1750222、標準偏差が 0.000023 の場合、変換 Y 平均をプロットし、適切なスケールを計算し、アルゴリズム gdinc.jsl を使用します。
- 分析を実行し、データが非常に偏っているか、または塊状 (クラスター化) であるかどうかを判断します。
私が達成しようとしているのは、テスト中であり、顧客はデータに基づいて広範な仕様制限を使用しているため、+/- 3 シグマと +/- 4.5 シグマに基づいて、上下の制御を伴う仕様制限を決定しようとしています限界。別の例として、分布プロットの X 軸の幅を広げることについて質問したとき、現在の仕様制限が LSL = 20 および USL = 40 であるためでした。 私が熱心な JMP 支持者である理由は、Quality および Process ユーティリティにある素晴らしいツールのおかげです。
私は多変量データ解析のプロットについてはほとんど知識がありませんが、少し勉強してみます。
実はこの会話で、なぜまたここにいるのかが分かりました。 グラフ ビルダーと Fix Y by X 分析の分布について私に教えていただいたのと同じプロット方法の使用について、ご意見をいただきたいと思います。 データセット(この場合は、wafer_number)間の違いを(統計的に)確認できるため、これは非常に優れた分析ツールであると感じます。 もちろん、平均を比較するために各ペアの生徒の T 検定を使用します... プラグアンドプラグアンドプレイを試みましたが、dispacth関数と混乱してしまいました。添付されているのは、データ テーブルと、私がやろうとしていることの [スクリプトに保存] ウィンドウと、出力の画像です。 繰り返しになりますが、皆様のご協力は非常に役に立ちます。
余談ですが、マネージャーに詳細な脚本作成クラスを受講できるかどうか尋ねたところ、イエスと答えたので、何かお勧めのクラスがあれば教えてください。 私はメリーランド州バリトモア地域にいます。
イング
Re: JSL - 異なる変数を含む列をループする -xy プロットを生成するイング、
探しているものを指定していません。 私は通常、JMP のデフォルトのスケーリングを使用し、すべてのサブグループに対して同じ軸のスケーリングが必要な場合は次のようなものを使用します。 このスクリプトでは、対象の変数に ylist という名前を付けますが、これは、Datetime を含む任意の数値連続変数 (列) に適用できます。秘訣は、JMP ですべてのスケールを設定し、次に軸の設定をテーブルの列にコピーすることで、その列を使用するグラフがそのスケールを展開するようにすることです。
Names Default to Here(1);
ylist = {"Sepal length", "Sepal width", "Petal length", "Petal width"};
dt = Open("$sample_data/iris.jmp");
//get common axis
for(i=1, i<=nitems(ylist), i++,
ovl = dt << Overlay Plot(Invisible,
Y( Column(dt,ylist[i]) ), //yaxis
Overlay( 0 )
);
report(ovl)[AxisBox(1)] << Save to Column Property;
ovl << close window;
);
//now the same axis will be applied to all sub groups
ovl1 = dt << OverlayPlot( Y( :Petal length ), Overlay(0), By(:Species) );
//all 3 subgroups have the same Y - axis
//ovl = dt << OverlayPlot( Y( eval(ylist) ), Overlay(0), By(:Species) );
次の場合にのみ、軸のカスタム スケーリングを実行します。
- 管理限界や仕様限界などの既知の範囲があり、
- +/- k シグマのようなものにスケールする必要があります。
- グリッド線を制御する必要がある場合、たとえば、0.5 シグマごとにグリッド線を制御する必要があります。
- 公称値が大きいが変動が非常に小さいデータ、たとえば、平均値が 1750222、標準偏差が 0.000023 の場合、変換 Y 平均をプロットし、適切なスケールを計算し、アルゴリズム gdinc.jsl を使用します。
- 分析を実行し、データが非常に偏っているか、または塊状 (クラスター化) であるかどうかを判断します。
外れ値の検出に関しては、すべてのデータに適用できる 1 つの方法が見つかりません。 強い右偏りデータ (例: ゼロ膨張ポアソン) を持つ単変量データの場合、私は修正された Lenth メソッドを使用することを好みます。
- uscreen = 中央値 + k * (上位 p パーセンタイル - 中央値) / Abs( 標準四分位数(p) )
- lscreen = 中央値 - k * (中央値 - 下位(p) パーセンタイル/ Abs(正規分位数(p) )
- ここで、p が 0.1 (10 および 90 パーセンタイルの場合) または p が 0.25 の場合、これは修正された擬似シグマとなり、通常、要約データの場合、k は [4,6] になります。 生データの場合もあるので、私ははるかに大きな k を使用します。
- また、通常は 1 つの変数のすべてのデータをスクリーニングしますが、グループごとに大きく異なる場合は、各グループに十分なデータがあるかどうかをグループごとにスクリーニングします。
以下は、グループごとのスクリーニング値を計算する例です。 vargroup に 10 個のグループがある場合、uscreen と lscreen はサイズ 10 のベクトルで、vg は 10 個の vargroup 名のリストです。
//Find global outliers by vargroup for raw measurement data
//Use an assymetric 6 pseudo-sigma, computed from the 10 & 90th percentiles.
summarize( vg=by(vargroup),
c=count,
q10=quantile(varvalue,.10),
q50=quantile(varvalue,.50),
q90=quantile(varvalue,.90)
);
uscr = q50 + 6*(q90-q50)/Normal quantile(0.9);
lscr = q50 - 6*(q50-q10)/Normal quantile(0.9);ご注意ください:
- 唯一の正しい方法というものはありません。データをレビューしている方法を常に検討する必要があります。 また、外れ値は重要な情報につながる可能性があるため、決して無視すべきではありません。
- 私はよく 2 レベルのスクリーニングを使用します。特に管理限界を計算する必要がある場合、プロットされた点のスクリーニングと限界のスクリーニングです。管理限界には 5 シグマ データと 6 シグマ データを含めるべきではありません。
- 毎週の分析を作成している場合は、毎週異なるスクリーニング値を取得できることに注意してください。 毎週同じ制限を使用して、一度メガ分析を実行するとよいでしょう。
- 多変量データの場合は、多変量画面を使用する必要があります。 図を参照してください。 2 つの明らかな外れ値は、単変量制限に基づいて制御されます。 したがって、データに強い相関がある場合は、相関スクリーンを使用する必要があります。 JMP 多変量には優れた多変量画面があります。

Re: JSL - 異なる変数を含む列をループする -xy プロットを生成するおはようグズモーガン0 、
以前、「自動的にスケーリングし、外れ値を自動的に見つけて排除するには複数の方法がある」と述べました。
それを私と共有してもよろしいでしょうか?たくさんのコーディングを行ってきましたが、いくつかの小さな調整を加えて完成にかなり近づいています。
イング
Re: JSL - 異なる変数を含む列をループする -xy プロットを生成するまず、私の名前はデイビッドです。 はじめまして..
それは正しいです。均一なスケールが必要なので、最悪のシナリオに基づいて -x 軸を調整します。外れ値を削除するための推奨事項をぜひ聞きたいです。 それらは私のデータセットを破壊しています... 私たちが電気的にテストしている部品は、合格、ギリギリ合格、または重大な故障のいずれかです。 致命的に故障した部品は取り外す必要があります。
修正したスクリプトをメイン スクリプトに挿入してテストします。 改めて、大変感謝しております。 Include() にも感謝します。 私のスクリプトの大部分は、SQL データのプル文字列だけでした。 私たちのデータベースには、テストの種類に応じてデータを取得する必要がある 8 つの異なるテーブルがあります。
ありがとうございました...
参考までに、次の例を示します。これらは 9 つあり、大量のコード行を占めていましたが、1 つの Include() で解決されました。
testdata_HAY_DC_QQ_Data = Expr(
"
SELECT
t1.testdate,
t1.wafer_id,
t1.wafer_number,
t1.lot_number,
t2.rownum,
t2.colnum,
t2.die_id,
t2.part_name,
t2.testname,
t2.channel,
t7.header_id,
t7.idx,
t7.run_id,
t7.set_id,
t7.Supply_Name,
t7.Voltage,
t7.Current
FROM tst_master t1
LEFT OUTER JOIN tst_dataset_header t2
ON ( t2.run_id = t1.run_id )
LEFT OUTER JOIN tst_dc_data t7
ON ( t7.header_id = t2.header_id )
WHERE (t1.wafer_number LIKE '"||SelectedLot||"')
AND (t2.testname LIKE '"||SelectedTest||"')
"
);
Re: JSL - 異なる変数を含む列をループする -xy プロットを生成する
インシュタイン,
すべてのディストリビューションで同じスケールを望んでいるという印象を受けました。JMP Distribution は通常、ヒストグラムを手元のデータに合わせて調整するという優れた機能を果たします。 ただし、データのサブセットをプロットする場合、個々のヒストグラムのスケールは異なります。 データの範囲がわかっている場合は、Lo、Hi、inc の値を割り当てます。プロセスの変更や??によって範囲が変わる可能性のあるデータをスクリプトで処理したい場合は、その後、Lo と Hi および inc を計算することがスクリプトのタスクになります。
前のスクリプトでは、単に最小値と最大値を使用しました。除外されていないデータ。
Lo = Floor( Col Minimum ( :test_2 * If( Excluded(), Empty(), 1 ) ) );
Hi = Ceiling( Col Maximum( :test_2 * If( Excluded(), Empty(), 1 ) ) );
以下では、端にスペースを与えるために別の変更を加えました。除外されていないデータの標準偏差を計算し、標準偏差の半分を追加します。分布を比較する代替グラフを提案した理由の 1 つは、JMP が含まれるすべてのデータに合わせてスケールし、チャネルとテスト状態の影響を確認できるためです。
dt = Current Data Table();
jjrn3 = New Window( "Distribution [test_2]", <<JOURNAL></JOURNAL>
自動的にスケーリングし、外れ値を自動的に検出して削除するには、複数の方法があります。 ある業界で受け入れられている方法が別の業界では受け入れられない可能性があるため、強く推奨することには消極的です。通常のデータ手法は、通常、塊状のデータ (クラスター化されたデータまたは空間データ) やゼロの膨らんだ欠陥データ、または信頼性データには適用されません。私の目的は、あなたにとってうまくいくかもしれないし、うまくいかないかもしれない代替案を指摘することです。
Re: JSL - 異なる変数を含む列をループする -xy プロットを生成する
はい、あなたのスキルは素晴らしいので、いつでもあなたから JSL クラスを受講したいと思います。
早速の質問ですが.. gd_inc.jsl を使用して実行したところ、これが得られた結果です。 スケールはほぼ完璧ですが、15 個のデータセットには次の 2 つの違いがあることがわかります。 将来的にこのようなことが起こらないとは限りませんが、 引用した 2 番目のスクリプトを使用してスクリプトを変更すると言われると、混乱してしまいます。 10.5 と 42.0 がどこから派生したのかを調べて理解しようとしていますが、それが log() 関数と関係があると考えていますが、わかりません。

Re: JSL - 異なる変数を含む列をループする -xy プロットを生成するgd_inc() は、このブログ パスで以前に送信されたユーザー関数です。再度添付させていただきました。使用する前にスクリプトにコードを追加するか、スクリプト (私は gd_inc.jsl と呼びます) を便利な関数の共通ディレクトリ、独自の個人ライブラリ、および適切な軸の増分を計算したい場合のスクリプトに保存します。ステートメントを追加します。
Include( "mydirectory/gd_inc.jsl" );
会社のレポートをサポートする人々は、usr_functions.jsl のような名前の 1 つの大きなスクリプトを作成することがよくあります。次に、多数の Include() ステートメントの代わりに、1 つの Include("mydirectory/usr_functions.jsl") を使用します。
ここでもう一度関数を説明します。 前回の投稿を参照してください。この関数の使用例が示されています。
gd_inc = Function({xlo, xhi, ntic}, {sp,tt, yrnd, ginc, ndec,lc, ll},
sp = (xhi - xlo)/ntic;
tt = log10(sp);
yrnd = If(
tt > 0, 1 - Floor( tt ),
Abs( Floor( tt ) - 1 )
);
ginc =round(sp,yrnd);
ndec = length(word(2,char(ginc),"."));
lc = length(word(1,char(xhi),"."));
if(ndec>0, lc=lc+ndec+1);
if(xlo <0, lc++); //add 1 character for the negative sign
ll=[1,1,1];
ll[1] = ginc; //increment
ll[2] = ndec; //# decimals
ll[3] = lc; //character length
ll
); // end gd_inc
/* test cases
show(gd_inc(1,11,10), gd_inc(.001, .005, 10), gd_inc(10000,20200, 10) )
*/ちなみに、私は長年にわたって JMP と JSL を使用し、教えてきました。 したがって、私の知識はそれほど驚くべきものではなく、ただ共有しようとしているだけです。
Re: JSL - 異なる変数を含む列をループする -xy プロットを生成するあなたはこの JSL に関しては素晴らしいです。 それが見つかるかどうかさえわかりません。 現在ディストリビューションをテスト中です。 他のグラフについても感謝してもしきれません。 これらをどのように行うかについても尋ねられると思います。 参考までに、私は JMP 12.1.0 を使用していますが、当社は JMP 14 への移行を進めており、このサイトで見つけた Semiconductor Toolkit アドインのおかげで待ちきれません。
gd_inc ステートメントに関してエラーが発生します。
名前が解決されていません: 'gd_inc' のアクセスまたは評価における gd_inc 、 gd_inc( Lo, Hi, 10 ) /*###*/
次のスクリプトでは、/*###*/ でマークされたエラーが発生します。
dt = Current Data Table();
jjrn3 = New Window( "Distribution [test_2]", <<JOURNAL></JOURNAL>
Re: JSL - 異なる変数を含む列をループする -xy プロットを生成するインシュタイン,
2 つのスクリプトを添付しました。
- ModifiedDistribution[test_2].jsl、および
- OtherDistributionPlots.jsl
ここで重要なのは、すべてのプラットフォーム レポートが同じ構造や同じメッセージを持っているわけではなく、使用できる内容は JMP のバージョンによって異なるということです。「ツリー構造の表示」および「XML の取得」はレポート構造を確認するのに役立つメッセージであり、「スクリプト索引」には表示ボックスのメッセージがリストされています。私は、XPath() を使用して、BoxPlotSeg や HistSeg など、見つけにくいオブジェクトや複数のセグメントの「ハンドル」を取得するのが好きです。ただし、オブジェクトを参照する方法は他にもあります。 ヒストグラムの Y 変数スケールボックスへのハンドルを取得するには、次を使用します。
_xx = gb<< Xpath("//ScaleBox[@charID='1']");
_xx << メッセージ;
または
Report( gb )[ScaleBox(1)] << メッセージ;
もう 1 つのスクリプトは、分布を比較するのに適した代替プロットを示します。
Re: JSL - 異なる変数を含む列をループする -xy プロットを生成する脚本ありがとうございます... 最初にあげたものについて質問があります。 それをメインスクリプトに入れるだけですか、それとも別の新しいスクリプトに入れますか?
あなたがプロットして上司に提供したグラフが気に入ったので、彼が要求している多くのレポートへの実装について彼からの連絡を待っています。
また、-x を -y でプロットする方法について教えていただいたスクリプトを使用し、グラフ ビルダーを Distribution に置き換えたところ、ほぼ完璧に機能しました。 ツリー構造について質問があります。 この行に戻って Text Box(1) を見つけることができましたが、ディストリビューションの変更により、このスクリプトを実行するとエラーが発生します。 取り外さなければいけない部品が見当たらないのですが… データテーブルと配信機能を組み込んだ修正スクリプトを添付します。
(ギガバイト<<トップ レポート)[テキストボックス( 1 )] <<消去; // where文を削除
Re: JSL - 異なる変数を含む列をループする -xy プロットを生成するアドバイス/コードありがとうございます。 今週もやってみようと思います。。 データの取得、テーブル形式、グラフ出力をデモンストレーションするためのソフト期限があります。 あなたの助けにより、私が成功する可能性が大幅に高まりました
Re: JSL - 異なる変数を含む列をループする -xy プロットを生成する前回の回答でも述べましたが、「固定スケールを作成するか、お気に入りのアルゴリズムを使用して、手元のデータに最適なスケールを見つけることができます。 」 以下は、スクリプト 7_InteractiveDisplays_Alternates.jsl (書籍 JSL Companion、第 2 版用) 用に作成された関数 gd_inc() です。
これは、値の範囲が不明なアプリケーションをコーディングするときに使用する関数を簡略化したものです。このスクリプトは、固定 10 進数形式が機能することを前提としています。 より一般的なスクリプトでは、小数が多すぎる場合に科学表記法に切り替えるか、対数スケールに変更するなどの判断が行われます。使用する前に、試してみる必要があります。
引数は Low、High、増分数です。 inc 値、形式の小数点以下の桁数、および最大長のベクトルを返します。完全なスクリプトでは、これは x 軸に使用され、方向はその長さに基づいて変更されます。 または、固定 10 進形式以外の何かを使用する必要がある場合に、長さをトリガーとして使用することもできます。
gd_inc = Function({xlo, xhi, ntic}, {sp,tt, yrnd, ginc, ndec,lc, ll},
sp = (xhi - xlo)/ntic;
tt = log10(sp);
yrnd = If(
tt > 0, 1 - Floor( tt ),
Abs( Floor( tt ) - 1 )
);
ginc =round(sp,yrnd);
ndec = length(word(2,char(ginc),"."));
lc = length(word(1,char(xhi),"."));
if(ndec>0, lc=lc+ndec+1);
if(xlo <0, lc++); //add 1 character for the negative sign
ll=[1,1,1];
ll[1] = ginc; //increment
ll[2] = ndec; //# decimals
ll[3] = lc; //character length
ll
); // end gd_inc
/* test cases
show(gd_inc(1,11,10), gd_inc(.001, .005, 10), gd_inc(10000,20200, 10) )
*/結果が得られたら、スクリプトを変更します。
_yscl = gd_inc(Lo,Hi, 10);
_xx[1] << Axis Setings( {Min( Lo ), Max( Hi ), Inc( _yscl[1] ),
Minor Ticks( 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} ),
Format("Fixed Dec",12,_yscl[2])
});
JMP は自動スケーリングをうまく機能します。グラフビルダーにとってスケーリングの範囲が広すぎる理由は、スケーリングが、滑らかな曲線だけでなく点を表示できるようにするためです。 1 つのオプションは、スプライン曲線の値を取得して、それらをプロットすることです。
選択した場合ないそのためには、曲線の最大値と最小値を見つける必要があり、Y_i のすべてのグラフを同じスケールにするか、各 Y_i と Test を同じスケールにする必要があるのか、それとも各グラフに独自のスケールを持たせる必要があるのかを決定する必要があります。JMP Spline Smooth() 関数はスプライン値を返し、可能な各曲線の最大値と最小値を見つけて、全体の最大値と最小値を取得できます。 これにより、Lo と Hi が得られ、通常、増分の数として 10 を使用します。
次に、gd_inc() 関数を使用して変更します。下限値と上限値がわかっている場合は、各 Y のテーブルまたは定数を作成します。
複数のカーブやスプラインのようなカスタム カーブを使用すると、カスタム スケーリングが複雑になる可能性があります。時間があれば、ダミー データ用の更新されたスクリプトを添付します。
ところで、ダミー データがどれほど現実的であるかはわかりません。 PowerPoint で複数のグラフを比較すると、混乱する場合があります。GraphBuilder はグラフの比較に適しています。 多数のグラフの代わりに、何らかの比較 (必ずしも以下のグラフである必要はありません) が役立つ場合があります。 以下は、テスト用の Y_3 対チャネル、および X のさまざまな値です。

Re: JSL - 異なる変数を含む列をループする -xy プロットを生成するテーブルをロードしませんでした。
Re: JSL - 異なる変数を含む列をループする -xy プロットを生成するあなたの解決策を試してみました。 私は通常、グラフがどのように見えるかを確認するために、スクリプトをウィンドウに保存します。
正確に何を達成しようとしているのかを理解していただくために、修正したダミー データを添付しました。
15 チャネル、この場合は異なる出力を持つ 2 つのテスト状態があるため、万能のソリューションは見つかりません。
ぜひご意見をお聞かせください。
この特定のテストには 3 つの出力があります。それは別に評価する必要があります。
デビッド
Re: JSL - 異なる変数を含む列をループする -xy プロットを生成する非常に高く評価.. 今晩試してみます..
Re: JSL - 異なる変数を含む列をループする -xy プロットを生成する固定スケールを作成するか、お気に入りのアルゴリズムを使用して、手元のデータに最適なスケールを見つけることができます。
以前に提供されたスクリプトの修正バージョンを以下に添付します。 新しいコードを以下に示します。ダミー データの場合、最適なスケーリングはおそらく -8 ~ 8 ですが、いくつかのグラフがクリップされる可能性があることを示すために -7 を選択したことに注意してください。
_xx = gb<< Xpath("//ScaleBox[@charID='Y']");
_xx[1] << Axis Setings({Min( -7 ), Max( 8 ), Inc( 1 ), Minor Ticks( 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )});変更をスクリプト化する方法を理解するには、複数の方法があります。 最も簡単なのは、1 つのグラフのスクリプトを作成し、GUI を使用して
軸、タイトル、凡例を変更します。 次に、赤い逆三角形 (グラフ ビルダーのアウトライン上) から、スクリプトの保存>スクリプトウィンドウへ。 このメソッドを使用すると、Dispatch 引数が表示されます。以下を参照してください。
Graph Builder(
Size( 1242, 709 ),
Show Control Panel( 0 ),
Variables( X( :X ), Y( :Y ), Group X( :Wafer ID ), Overlay( :RowCol ) ),
Elements( Smoother( X, Y, Legend( 19 ) ) ),
Where( dt:Channel == chnl & dt:Test State == tst ),
SendToReport(
Dispatch(
{},
"Graph Builder",
OutlineBox,
{Set Title( "Results for Channel=1 and Test State=1" )}
),
Dispatch(
{},
"Y",
ScaleBox,
{Min( -7 ), Max( 8 ), Inc( 1 ), Minor Ticks( 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
)
)
);タイトルはカスタムであるため、OutlineBox への Dispatch を削除し、このコードを for ループで使用すると、各グラフがスクリプトで指定されたのと同じスケーリングを持つようになります。
Re: JSL - 異なる変数を含む列をループする -xy プロットを生成するグラフの For() ループに関連してもう 1 つ質問してもいいですか?
自動スケーリングを最適化する方法はありますか?
例のスケールを最小 = 5 および最大 = 30 から取得できれば、周波数全体で部品がどのように動作するかを正確に把握できます...
もちろん、事前に異常値を削除する必要があります。
ありがとう
Re: JSL - 異なる変数を含む列をループする -xy プロットを生成するこの件に関しては、いくら感謝してもしきれません。 ここの職場では、あなたがやったことのやり方を遠隔操作で教えることさえできる人は誰もいませんでした。
これにより、この作業にかかる時間を少なくとも 80% 削減できました。
あなたのソリューションと、データベース ファイルにアクセスするために私が作成している SQL スクリプトにより、私たちは顧客に対して素晴らしい立場に立つことができます。
ありがとうございました..
D
Re: JSL - 異なる変数を含む列をループする -xy プロットを生成するご返信ありがとうございます。 あなたの例を使用して、それが理解できるかどうかを確認してみます。
「select where」ステートメントを使用してみましたが、かなりうまくいきました。書かなければならないコードの量を減らそうとしただけです。 上記のすべてのパラメータを使用した 5 つの異なるテストがあります。
これを試したらまた報告します。
再度、感謝します..
Re: JSL - 異なる変数を含む列をループする -xy プロットを生成するこんにちは、
データ フィルターの代わりに where ステートメントを使用するようにグラフを生成するアプローチを変更することをお勧めします。データ フィルターはインタラクティブなビジュアル分析に最適ですが、ビューは表示されないため、where ステートメントを使用することをお勧めします。where ステートメントを使用すると、where テキスト ボックスが表示されます。削除することができます。 By 引数 By(:Channel, :Test State) を使用することもできます。 次に、スクリプトは各 GB にアクセスし、プレゼンテーションを保存する必要があります。
私はプレゼンテーションの保存のファンではなく、JMP 出力から PPTX スライドを作成する無料の外部コマンド ライン プログラムである P3ICLI を使用するのが好きです。 見るP3ICLI を使用して PPTX を作成する JSL の例。 他のコードと同様に、見た目は乱雑ですが、非常にカスタマイズされたものを作成でき、グラフやタイトルのサイズを制御できます。
ただし、プレゼンテーションの保存を使用して複数のプロットを保存する場合は、複数のレイアウト表示を画像として記録するいくつかのトリックを作成しました。プレゼンテーションの保存を使用しますが、サイズを調整する必要があります。
とにかく、シナリオをエミュレートするためのダミー データ テーブルと 2 つのスクリプトが添付されており、それぞれがページごとに 1 つの画像を保存します。
お役に立てれば。