データテーブルから変動チャートに仕様制限を追加するにはやあ、
私の JMP バージョンは 10.0.2 です。 必要な作業のため、分析するパラメータが数百あり、各パラメータには 100 を超えるデータ ポイントがあります。 私の顧客は、これらのパラメーターの LSL、ターゲット、USL を含む別のファイルを Excel で送ってきました。 したがって、変動チャートをプロットするときに仕様限界を対応するパラメーターにリンクするスクリプト/埋め込みツールがあるかどうか疑問に思っています(X軸は異なるバッチ番号、Y軸はパラメーターデータです)。 生データの箱ひげ図も表示したいと思います。 現在、これらすべてを手動で行っているため、多くの時間を無駄にしています。 それで、解決策があるかどうか教えてください(そうあるべきだと思います)
機密事項のため、生データ ファイルをお見せできないことをご容赦ください。 前もって感謝します。
Re: データテーブルから変動チャートにスペックリミットを追加するにはネルソンさん、ありがとう。このスクリプトは私のケースでも機能します。 皆様の忍耐とサポートに本当に感謝しています。
Re: データテーブルから変動チャートにスペックリミットを追加するには列名には、JMP が名前の一部として使用するのではなく、実行しようとする文字が含まれています。したがって、:Name() 関数を追加して、JMP に完全な値を名前として解釈させる必要がありました。以下のスクリプトを参照してください。
注: dt = および dtLimits = ステートメントは、すでに開かれているデータ テーブルを検索するように変更されました。open() 関数を使用するように変更する必要がある場合があります。
// Open table to have limits set on
dt = data table("raw data");
dtLimits = data table("Spec limit");
// Get a list of all of the numeric columns in the measurment data table
colNames = dt << get column names( numeric, string );
// Loop across the Limits table and apply the findings to data table
For( i = 1, i <= N Rows( dtLimits ), i++,
// If a column in the measurement data table has the same name as the current
// Limits data table column "Parameter" has, then process the data
colNamesPosition = Loc( colNames, dtLimits:Parameter[i] );
If( N Rows(colNamesPosition) > 0,
Eval(
Substitute(
Expr(
__col__ << set property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
)
),
Expr( __col__ ), Parse( "dt:Name(\!"" || colNames[colNamesPosition[1]] || "\!")" ),
Expr( __LSL__ ), dtLimits:LSL[i],
Expr( __USL__ ), dtLimits:USL[i],
Expr( __Target__ ), dtLimits:Target[i]
)
)
);
);
// Run Variability Charts
Variability Chart( Y( :Name("TWNB_10/10$Vtlin%V"), :Name("TWNB_10/10$Idlin%uA/um") ), X( :wafer ) );Re: データテーブルから変動チャートにスペックリミットを追加するには簡易生データ表と規格限界表を添付しました。 このエラーは、$ を含むパラメータの命名規則に起因すると思います。 しかし、パラメータ名を変更することはできません。 確認にご協力ください。 本当に感謝しています。
Re: データテーブルから変動チャートにスペックリミットを追加するには私が提供したスクリプトは、Limits データ テーブルの列に名前が付けられていることを前提としています。
これらは制限データ テーブルの列の名前ですか?
制限データ表と測定データ表のコピーを添付していただけますか。これにより、問題のデバッグが容易になります。
Re: データテーブルから変動チャートにスペックリミットを追加するにはありがとうネルソン。 スクリプトを修正したところ、今度は「スコープ指定されたデータ テーブル アクセスにはデータ テーブルの列または変数が必要です」という別のエラーが表示されました。 これではまた混乱してしまいます。 理由を教えていただけますか?
Re: データテーブルから変動チャートにスペックリミットを追加するにはコードにエラーを発見しました。コード内の行を変更してください
If( N Rows( ) > 0,
に
If( N Rows( colNamesPosition ) > 0,
Re: データテーブルから変動チャートにスペックリミットを追加するにはraw data.jmp 内のパラメータは、speclimits.jmp 内のすべてのパラメータの一部にすぎません。 それで、これが理由でしょうか?
私は JSL を初めて使用するので、可能であれば、私のケースに基づいて他の関数でも同様のことができるかどうか教えてください。 ご協力ありがとうございました。
Re: データテーブルから変動チャートにスペックリミットを追加するには問題は、Loc() 関数がcolNames{} リスト内で一致するものを見つけられないことです。 この関数には完全一致が必要です。 大文字/小文字、スペースなどはすべて問題を引き起こす可能性があります。Re: データテーブルから変動チャートにスペックリミットを追加するにはこんにちは、ネスロンさん
私は問題を知っている、または少なくとも私の考えとあなたのスクリプトの違いは知っていると思います。 以前に明確に説明していなかったことをお詫びします。
最初に、生データを貼り付けた新しいデータテーブルを作成しました。 これが現在のデータテーブルだと思います。 そこで、これを dt=current data table() として定義します。 次に、保存した Speclimits.jmp ファイルを開きます。
dtLimits<SPAN class="token operator">=</SPAN><SPAN class="token function">Open</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"$Desktop\JMP\Spec limits.jmp"</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
私が投稿したスクリプトに基づいてこれは機能しないと思いますか?
私が今行っていることは、新しいデータテーブルを raw data.jmp として保存することです。 次に、以下のスクリプトを使用します。 ただし、パラメーターには仕様制限がまだ追加されていません。
// Open table to have limits set on
dt = Open( "C:\Users\Desktop\JMP/raw data.jmp" );
// Open spec limit table
dtLimits = Open( "C:\Users\Desktop\JMP/Spec limits.jmp" );
// Get a list of all of the numeric columns in the measurement data table
colNames = dt << get column names( numeric, string );
// Loop across the Limits table and apply the findings to data table
For( i = 1, i <= N Rows( dtLimits ), i++,
// If a column in the measurement data table has the same name as the current
// Limits data table column "Parameter" has, then process the data
colNamesPosition = Loc( colNames, dtLimits:Parameter[i] );
If( N Rows() > 0,
Eval(
Substitute(
Expr(
__col__ << set property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
)
),
Expr( __col__ ), Parse( "dt:" || colNames[colNamesPosition[1]] ),
Expr( __LSL__ ), dtLimits:LSL[i],
Expr( __USL__ ), dtLimits:USL[i],
Expr( __Target__ ), dtLimits:Target[i]
)
)
);
);そこで、このスクリプトをデバッグしようとしました。 L22 でエラーが表示されることがわかりました。無効な添え字 (数値または数値のリストである必要があります)。 なぜこれがあなたのスクリプトでは機能するのに私のスクリプトでは機能しないのかわかりません。 何かアイデアがありましたら、ぜひお知らせください。 ありがとう。
Expr( __col__ ), Parse( "dt:" || colNames[colNamesPosition[1]] ),
Re: データテーブルから変動チャートにスペックリミットを追加するには声明:
dt=current data table();
すでに開かれているデータテーブルを指すように変数「dt」を設定します。したがって、測定データ テーブルも制限テーブルも開いていない場合は、
dt=open("<PATH>/data table name");</PATH>
「current data table()」関数ではなく、測定データテーブルを開きます。
最初の回答で提供した JSL を単にコードに切り取って貼り付けるのではなく、その JSL がどのように機能するかを確実に理解する必要があります。この例で使用したすべての関数は、例とともにスクリプト索引に文書化されています。
ヘルプ==>スクリプトインデックス
Re: データテーブルから変動チャートにスペックリミットを追加するにはこんにちは、ネルソンさん
ご返事ありがとうございます。 サンプルでは、2 つのデータ テーブルを作成しました。1 つは Big Class.jmp で、もう 1 つは仕様制限テーブルです。 ただし、私の場合、これらの 2 つのデータテーブルがすでに存在しています。 したがって、私に残されたことは、2 つのテーブルをリンクし、colNames = dt << get columns names (numeric, string ) から始まるスクリプトで指定したことを実行することだけだと思います。 以下で試してみました:
dt=current data table();
show (dt);
dtLimits=Open( "$Desktop\JMP\Spec limits.jmp" );
そして取り付けました
colNames = dt << get column names (numeric, string ).
そしてその後。残念ながら、Speclimits.jmp のみが開かれましたが、仕様制限は現在のデータテーブルに追加されませんでした。 ダバッグを手伝ってくれませんか? 本当に感謝しています。
Re: データテーブルから変動チャートにスペックリミットを追加するには以下は、制限データ テーブルから値を読み取り、測定データ テーブルに適用するサンプル スクリプトです。また、変動チャートや他のほとんどのプラットフォーム チャートに仕様限界が表示される場合。
// Open table to have limits set on
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Create a limits table for the example
dtLimits = New Table( "Limits",
Add Rows( 2 ),
New Column( "Parameter", Character, "Nominal", Set Values( {"height", "weight"} ) ),
New Column( "LSL", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [52, 60] ) ),
New Column( "Target", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [63, 105] ) ),
New Column( "USL", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [70, 180] ) )
);
// Get a list of all of the numeric columns in the measurment data table
colNames = dt << get column names( numeric, string );
// Loop across the Limits table and apply the findings to data table
For( i = 1, i <= N Rows( dtLimits ), i++,
// If a column in the measurement data table has the same name as the current
// Limits data table column "Parameter" has, then process the data
colNamesPosition = Loc( colNames, dtLimits:Parameter[i] );
If( N Rows() > 0,
Eval(
Substitute(
Expr(
__col__ << set property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
)
),
Expr( __col__ ), Parse( "dt:" || colNames[colNamesPosition[1]] ),
Expr( __LSL__ ), dtLimits:LSL[i],
Expr( __USL__ ), dtLimits:USL[i],
Expr( __Target__ ), dtLimits:Target[i]
)
)
);
);
// Run Variability Charts
Variability Chart( Y( :height, :weight ), X( :sex ) );