Per aggiungere limiti di specifica nel grafico della variabilità dalla tabella dei datiCiao,
La mia versione di JMP è 10.0.2. A causa del lavoro necessario, ho centinaia di parametri da analizzare e ogni parametro ha più di 100 punti dati. Il mio cliente mi ha inviato un altro file che include LSL, target e USL di questi parametri in Excel. Pertanto mi chiedo se esiste uno script/strumento incorporato per collegare i limiti delle specifiche con i parametri corrispondenti quando sto tracciando il grafico Variabiltiy (l'asse X deve essere il numero di lotto diverso e l'asse Y sono i dati dei parametri). Voglio anche mostrare il box plot dei dati grezzi. Attualmente faccio tutto questo manualmente, il che fa perdere molto tempo. Quindi per favore fatemi sapere se c'è una soluzione (presumo dovrebbe essere)
Perdonami se non posso mostrare il file di dati grezzi per motivi riservati. Grazie in anticipo.
Re: Per aggiungere limiti di specifica nel grafico della variabilità dalla tabella dei datiGrazie Nelson, questo script può funzionare sul mio caso. Apprezzo davvero la tua pazienza e il tuo supporto!
Re: Per aggiungere limiti di specifica nel grafico della variabilità dalla tabella dei datiI nomi delle colonne contengono caratteri che JMP tenterà di eseguire, invece di usarli come parte del nome.Pertanto ho dovuto aggiungere una funzione :Name() per forzare JMP a interpretare il valore completo come nome.Vedi lo script qui sotto.
Nota: le istruzioni dt = e dtLimits = sono state modificate per cercare tabelle di dati già aperte.Potrebbe essere necessario ripristinarli utilizzando una funzione 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: Per aggiungere limiti di specifica nel grafico della variabilità dalla tabella dei datiHo allegato la tabella dei dati grezzi semplificata e la tabella dei limiti delle specifiche. Penso che l'errore derivi dalla regola di denominazione dei miei parametri che contiene $. Ma non posso cambiare il nome del parametro. Si prega di aiutare a controllare. Davvero apprezzato.
Re: Per aggiungere limiti di specifica nel grafico della variabilità dalla tabella dei datiLo script che ho fornito presuppone che le colonne della tabella dati dei limiti siano denominate
- Parametro
- LSL
- USL
- Bersaglio
Sono questi i nomi delle colonne nella tabella dei dati dei limiti?
Sarebbe possibile allegare una copia della tabella dei dati dei limiti e della tabella dei dati delle misurazioni.Ciò faciliterebbe il debugging dei problemi.
Re: Per aggiungere limiti di specifica nel grafico della variabilità dalla tabella dei datiGrazie Nelson. Ho modificato lo script e questa volta è apparso un altro errore che diceva "l'accesso alla tabella dati con ambito richiede una colonna o una variabile della tabella dati". Questo mi rende di nuovo confuso. Puoi per favore farmi sapere il motivo?
Re: Per aggiungere limiti di specifica nel grafico della variabilità dalla tabella dei datiHo appena scoperto un errore nel mio codice.Si prega di modificare la riga nel codice
If( N Rows( ) > 0,
A
If( N Rows( colNamesPosition ) > 0,
Re: Per aggiungere limiti di specifica nel grafico della variabilità dalla tabella dei datiI parametri in raw data.jmp sono solo una parte di tutti i parametri in spec limits.jmp. Quindi potrebbe essere questo il motivo?
Sono davvero nuovo in JSL quindi, se possibile, per favore fatemi sapere se altre funzioni possono fare cose simili in base al mio caso. Grazie mille per il vostro aiuto.
Re: Per aggiungere limiti di specifica nel grafico della variabilità dalla tabella dei datiIl problema è che la funzione Loc() non trova una corrispondenza nell'elenco colNames{}. La funzione richiede una corrispondenza esatta. Maiuscolo/minuscolo, spaziatura ecc. possono causare problemi.Re: Per aggiungere limiti di specifica nel grafico della variabilità dalla tabella dei datiCiao Nelon,
Penso di conoscere il problema, o almeno la differenza tra il mio modo di pensare e il tuo copione. Perdonami, non l'ho descritto chiaramente prima.
All'inizio ho creato una nuova tabella di dati con i dati grezzi incollati. Presumo che questa sia la tabella dei dati corrente. Quindi lo definisco come dt=current data table(). Quindi apro il file Spec limits.jmp salvato
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>
Penso che questo non possa funzionare in base allo script che ho pubblicato?
Quello che sto facendo ora è salvare la nuova tabella di dati come raw data.jmp. Quindi utilizzare lo script seguente. Ma ancora nessun limite di specifica è stato aggiunto ai parametri.
// 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]
)
)
);
);Quindi ho provato a eseguire il debug di questo script; si scopre che L22 mostra un errore: pedice non valido (deve essere un numero o un elenco di numeri). Non sono sicuro del motivo per cui funziona nella tua sceneggiatura ma non nella mia. Se avete idee per favore fatemelo sapere. Grazie.
Expr( __col__ ), Parse( "dt:" || colNames[colNamesPosition[1]] ),
Re: Per aggiungere limiti di specifica nel grafico della variabilità dalla tabella dei datiLa dichiarazione:
dt=current data table();
imposta la variabile "dt" in modo che punti a una tabella dati già aperta.Pertanto, se né la tabella dei dati delle misurazioni né la tabella dei limiti sono aperte, sarà necessario utilizzare il file
dt=open("<PATH>/data table name");</PATH>
per aprire la tabella dei dati di misurazione, non la funzione "tabella dei dati correnti ()".
Devi assicurarti di capire come il JSL che ho fornito nella mia prima risposta, piuttosto che semplicemente tagliarlo e incollarlo nel tuo codice.Tutte le funzioni utilizzate nel mio esempio sono documentate nello Scripting Index, insieme agli esempi.
Aiuto==>Indice degli script
Re: Per aggiungere limiti di specifica nel grafico della variabilità dalla tabella dei datiCiao Nelson,
La ringrazio molto per la risposta. Nel tuo esempio hai creato due tabelle di dati, una è Big Class.jmp e un'altra è la tabella dei limiti delle specifiche. Tuttavia, nel mio caso, esistevano già queste due tabelle di dati. Quindi penso che ciò che mi resta sia solo collegare le due tabelle insieme e fare ciò che hai fornito nello script a partire da colNames = dt << ottieni i nomi delle colonne (numeric, string ). Ho provato di seguito:
dt=current data table();
show (dt);
dtLimits=Open( "$Desktop\JMP\Spec limits.jmp" );
e poi attaccato
colNames = dt << get column names (numeric, string ).
e dopo.Purtroppo è stato aperto solo Spec limits.jmp, ma i limiti di specifica non sono stati aggiunti alla tabella dati corrente. Potete per favore aiutarmi a duplicare? Davvero apprezzato.
Re: Per aggiungere limiti di specifica nel grafico della variabilità dalla tabella dei datiEcco uno script di esempio che leggerà i valori da una tabella di dati dei limiti e li applicherà alla tabella dei dati di misurazione.E quando il grafico della variabilità o la maggior parte degli altri grafici della piattaforma visualizzeranno i limiti delle specifiche.
// 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 ) );