Combinazione del comando For loop e Dispatch() in un grafico di variabilitàCiao a tutti,
Sono nuovo di JMP e della programmazione in generale. La mia sfida attuale:
Ho una grande tabella di dati con 800 colonne. Ora vorrei creare grafici a scatola utilizzando il grafico della variabilità, ma utilizzando un elenco, in cui definisco prima quali colonne delle 800 vorrei utilizzare. Quindi creo un ciclo For come mostrato di seguito.
Qual è la sintassi corretta per far funzionare il concat?
Grazie
Datalist_log = {Test1, Test2, Test33, Test50}; //first I define the list with the tests I Need. It needs to be like this in the code.
imax = N Items( Datalist );
//Boxplots
For( i = 1, i <= imax, i++,
Variability Chart(
Y( Datalist_log[i] ), //Loop cycling through the list putting the respective column on the Y axis
X( :wafernr ),
Max Iter( 100 ),
Conv Limit( 0.00000001 ),
Number Integration Abscissas( 128 ),
Number Function Evals( 65536 ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Std Dev Chart( 1 ),
Show Box Plots( 1 ),
SendToReport(
Dispatch(
{"Variability Chart for Test1"}, <BR />// This is how it looks when it works. <BR />//But I need to replace the hard coded string with an element from<BR />//the list defined above as a part of the Loop, for example:
{"Variability Chart for " ||Datalist_log[i]}, <BR />//This is my most promising attempt. But I have failed to understand how the concat works.
//If i manually change the argument to <BR />//{"Variability Chart for XYSomethingElse"}, the outcome is the same, meaning that the <BR />//formatting commands (lot plot, scientific axis etc.) that follow are all ignored.
"2",
ScaleBox,
{Scale( "Log" ), Format( "Scientific", 12 ), Min( 0.0000000001 ), Max( 0.000001 ), Inc( 1 ), Minor Ticks( 0 ),
Add Ref Line( UpperSpec_log[i], "Dotted", "Black", "USL", 2 )}
),
Dispatch(
{"Variability Chart for Test1"},
"Variability Chart",
FrameBox,
{Frame Size( 600, 240 ), Marker Size( 1 ),
DispatchSeg( Box Plot Seg( 1 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 2 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 3 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 4 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 5 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 6 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 7 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 8 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 9 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 10 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 11 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 12 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 13 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 14 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 15 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 16 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 17 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 18 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 19 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 20 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 21 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 22 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 23 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 24 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 25 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} )}
),
Dispatch( {"Variability Chart for Test1"}, "", NomAxisBox, {Set Width( 573 ), Set Height( 21 )} ),
Dispatch( {"Variability Chart for Test1"}, "Varability Std Chart", FrameBox, {Frame Size( 559, 180 )} )
)
//)
);
Oggetto: Combinazione del ciclo For e del comando Dispatch() in un grafico di variabilitàIl tuo frammento di codice non mi permette di capire il problema.Il mio suggerimento iniziale è di chiudere JMP e quindi riavviarlo.In rare occasioni JMP si confonde.Il riavvio di JMP cancellerà tale memoria.
Sarebbe utile se potessi fornire lo script completo e una tabella di dati di esempio.
Oggetto: Combinazione del ciclo For e del comando Dispatch() in un grafico di variabilitàCiao Jim,
È successo qualcosa dopo aver modificato il mio post 4-5 volte, il sito ha detto che deve essere rivisto prima che diventi visibile e poi è scomparso. Ecco perché non ho visto la risposta.
In effetti, dopo aver pubblicato la domanda iniziale ho fatto qualcosa di sciocco e ha funzionato, quindi ho pensato di aver funzionato. Ma poi ho scoperto che funziona indipendentemente da ciò che scrivo dopo Dispatch() (vedi sotto).
Cercherò di capire cosa fanno effettivamente Eval, Expr e Substitute. Molte grazie
For( q = 1, q <= kmax, q++,
Variability Chart(
Y( Datalist_log[q] ),
X( :wafernr ),
Max Iter( 100 ),
Conv Limit( 0.00000001 ),
Number Integration Abscissas( 128 ),
Number Function Evals( 65536 ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Std Dev Chart( 1 ),
Show Box Plots( 1 ),
Disp_String = concat Items ({VarChartText,Datalist_log[q]}), //This is useless
SendToReport(
Dispatch(Disp_stringxyuz12034823048, //Does not matter what I write here
"2",
ScaleBox,
{Scale( "Log" ), Format( "Scientific", 12 ), Min( 0.0000000001 ), Max( 0.000001 ), Inc( 1 ), Minor Ticks( 0 ),
Add Ref Line( UpperSpec_log[q], "Dotted", "Black", "USL", 2 )}
),
Dispatch(Disp_Stringsomethingelse,
"Variability Chart",
FrameBox,
{Frame Size( 600, 240 ), Marker Size( 1 ),
DispatchSeg( Box Plot Seg( 1 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot S
...
...
...Oggetto: Combinazione del ciclo For e del comando Dispatch() in un grafico di variabilitàEcco una rielaborazione del tuo codice, utilizzando una funzionalità molto potente in JSL, sostituzione.Ho commentato la tua riga di riferimento UpperSpec_log, poiché non avevo quell'elenco disponibile.Tuttavia, Variability Chart Platform traccerà automaticamente quei limiti di specifica, se li aggiungi come Proprietà colonna alle tue colonne, prima di eseguire Variability Chart Platform.Una volta aggiunti i limiti come proprietà della colonna, molte delle piattaforme consentiranno la visualizzazione dei limiti delle specifiche.
Ecco il mio codice rielaborato
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Semiconductor Capability.jmp" );
Try(dt:Wafer << Set Name( "wafernr" ));
Datalist_log = {NPN1, PNP1, NPN2}; //first I define the list with the tests I Need. It needs to be like this in the code.
imax = N Items( Datalist_log );
//Boxplots
For( i = 1, i <= imax, i++,
Eval(
Substitute(
Expr(
Variability Chart(
Y( __DataList__ ), //Loop cycling through the list putting the respective column on the Y axis
X( :wafernr ),
Max Iter( 100 ),
Conv Limit( 0.00000001 ),
Number Integration Abscissas( 128 ),
Number Function Evals( 65536 ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Std Dev Chart( 1 ),
Show Box Plots( 1 ),
SendToReport(
Dispatch(
{__VarChart__},
// This is how it looks when it works.
//But I need to replace the hard coded string with an element from
//the list defined above as a part of the Loop, for example:
//{"Variability Chart for " || Datalist_log[i]},
//This is my most promising attempt. But I have failed to understand how the concat works.
//If i manually change the argument to
//{"Variability Chart for XYSomethingElse"}, the outcome is the same, meaning that the
//formatting commands (lot plot, scientific axis etc.) that follow are all ignored.
"2",
ScaleBox,
{Scale( "Log" ), Format( "Scientific", 12 ), Min( 0.0000000001 ), Max( 0.000001 ), Inc( 1 ), Minor Ticks( 0 )//,
//Add Ref Line( UpperSpec_log[i], "Dotted", "Black", "USL", 2 )
}
),
Dispatch(
{__VarChart__},
"Variability Chart",
FrameBox,
{Frame Size( 600, 240 ), Marker Size( 1 ), DispatchSeg(
Box Plot Seg( 1 ),
{Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )}
), DispatchSeg( Box Plot Seg( 2 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 3 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 4 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 5 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 6 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 7 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 8 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 9 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 10 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 11 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 12 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 13 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 14 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 15 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 16 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 17 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 18 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 19 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 20 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 21 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 22 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 23 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 24 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} ),
DispatchSeg( Box Plot Seg( 25 ), {Box Type( "Outlier" ), Line Color( "Red" ), Line Width( 2 )} )}
),
Dispatch( {__VarChart__}, "", NomAxisBox, {Set Width( 573 ), Set Height( 21 )} ),
Dispatch( {__VarChart__}, "Varability Std Chart", FrameBox, {Frame Size( 559, 180 )} )
)
)
),
Expr( __DataList__ ), Parse( ":" || Char( DataList_Log[i] ) ),
Expr( __VarChart__ ), "Variability Chart for " || Char( DataList_Log[i] )
)
)
);