Script più colonne raggruppate nel grafico di distribuzioneSto cercando di scrivere un modo per tracciare più colonne di parametri raggruppate insieme in una distribuzione (come mostrato in figura). Il mio problema è che il codice necessita di una riga "Distribuzione continua" separata per ogni colonna di parametro. I miei pull di dati hanno nomi di colonna e numero di colonne diversi da tracciare a seconda di ciò che sto facendo. Non riesco a capire come prendere quell'elenco di nomi di colonna e farlo tracciare in un gruppo come mostrato di seguito, piuttosto che scorrere e creare grafici individuali per ciascun parametro.
Distribution(
Continuous Distribution( Column( :Parameter1 ) ),
Continuous Distribution( Column( :Parameter2 ) ),
Continuous Distribution( Column( :Parameter3 ) )
);

Re: Script più colonne raggruppate nel grafico di distribuzioneEcco come gestirei il problema
names default to here(1);
dt=open("$SAMPLE_DATA/semiconductor capability.jmp");
colList = dt << get column names(continuous,string);
// For this illustration I want to use just the NPNn columns
for(i=nitems(colList), i>=1,i--,
If(substr(colList[i],1,3)!="NPN", remove from(colList,i,1))
);
// build the JSL string
theExpr =
"Dis = Distribution(
Continuous Distribution( Column( :" || colList[1] || " ),
Process Capability( Use Column Property Specs ) )";
For( i = 2, i <= N Items( colList ), i++,
theExpr = theExpr || "," || "Continuous Distribution( Column( :" || colList[i] ||
" ), Process Capability( Use Column Property Specs ) )"
);
theExpr=theExpr||");";
// run the built JSL string
eval(parse(theexpr));
// Standardize the settings
disr = Dis << report;
disr[colList[1]]["Quantiles"]<<CLOSE all="" like="" this=""></CLOSE>Re: Script più colonne raggruppate nel grafico di distribuzioneNotato, penso che la mia ipotesi che tutto inizi con un'applicazione mi abbia causato molto dolore.
Un'altra domanda, si spera, se voglio impostare le proprietà di Tutto le distribuzioni in un report, come ho fatto con questa singola variabile qui, "T05066DD Rapporto ET_DELTA" c'è un semplice comando per farlo, o devo creare un ciclo for ed eseguire il "sendtoreport" per ogni variabile nella mia lista?
ET_DELTA_List = {};<BR />dist = dt << Distribution(Columns(evalList(ET_DELTA_List)));
dist << arrange in rows(5);
dist << Quantiles(0);
dist << Summary Statistics(0);
report(dist)[OutlineBox(2)] << Open all like this(1);
//show properties(dist)
dist << SendToReport(
Dispatch(
{"T05066DD ET_DELTA Ratio"},//this is one of many distributions. i would like to set the following properties to all the distributions in the report
"1",
ScaleBox,
{Min( -5 ), Max( 5 ), Inc( 5000 ), Minor Ticks( 1 ),
Add Ref Line( 2, "Solid", "Black", "", 1 ),
Add Ref Line( -2, "Solid", "Black", "", 1 )}
)
)</CODE></P><P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-277293" slang="en-US" mode="NONE">Re: Script più colonne raggruppate nel grafico di distribuzione</LINGO-SUB><LINGO-BODY id="lingo-body-277293" slang="en-US" mode="NONE"><P>Eviterei semplicemente il sovraccarico di inserirlo in un'applicazione.</P></LINGO-BODY><LINGO-SUB id="lingo-sub-277279" slang="en-US" mode="NONE">Re: Script più colonne raggruppate nel grafico di distribuzione</LINGO-SUB><LINGO-BODY id="lingo-body-277279" slang="en-US" mode="NONE"><P>Ok grazie.</P><P>quale sarebbe la tua strategia per farlo? Eviteresti di usare il generatore di applicazioni con allocate ecc. E useresti solo uno script per posizionare tutto?</P><P>grazie ancora</P><P>Wayne.</P></LINGO-BODY><LINGO-SUB id="lingo-sub-277090" slang="en-US" mode="NONE">Re: Script più colonne raggruppate nel grafico di distribuzione</LINGO-SUB><LINGO-BODY id="lingo-body-277090" slang="en-US" mode="NONE"><P>La risposta breve è no.Come minimo è necessario creare una stringa di caratteri che includa tutto il codice dell'app JMP.</P></LINGO-BODY><LINGO-SUB id="lingo-sub-277077" slang="en-US" mode="NONE">Re: Script più colonne raggruppate nel grafico di distribuzione</LINGO-SUB><LINGO-BODY id="lingo-body-277077" slang="en-US" mode="NONE"><P>Se volessi inserirlo in un'applicazione, con un filtro dati locale, potrei inserire l'istruzione Allocate all'interno di Eval(Parse) ?</P><P>COSÌ..</P><PRE><CODE class=" language-jsl">theExpr = "dis = Allocate(
Border1 = Border Box();
DataFilterContext1 = Data Filter Context Box();
List1 = H List Box();
DataFilter1 = Dt << Data Filter( Local );
Report1 = Platform(
Dt,
Distribution(
Continuous Distribution( column( column(Dt, colNames[1])))";
For( i = 2, i <= N Items( colNames ), i++,
theExpr = theExpr || ", Continuous Distribution( column( column(Dt, colNames[" || Char( i ) || "])))"
);
theExpr = theExpr || " )
);
)";
show(theexpr);
Eval( Parse( theExpr ) );
Re: Script più colonne raggruppate nel grafico di distribuzioneTutto quello che devi fare è modificare l'elenco dei nomi delle colonne, per soddisfare i requisiti.Ci sono molti modi per farlo, di seguito è riportato un esempio
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// Get the all of the numeric, continuous column names
colNames = dt << get column names( string, continuous );
// Work backwards through the list of columns eliminating those that
// do not meet the pattern one is interested in
For( i = N Items( colNames ), i >= 1, i--,
If( left( colNames[i], 3 ) != "NPN" , colNames = remove( colNames, i, 1 ) );
);
// Build a character string that represents the commands that need to be run
theExpr = "dis = dt << Distribution(
Continuous Distribution( column( column(dt, colNames[1])))";
// Loop across the remaining columns in the colNames list and generate the continuous distribution
// commands
For( i = 2, i <= N Items( colNames ), i++,
theExpr = theExpr || ", Continuous Distribution( column( column(dt, colNames[" || Char( i ) || "])))"
);
// place the closing ")" to complete the command string
theExpr = theExpr || ");";
// Execute the code generated and placed into the character string variable
Eval( Parse( theExpr ) );
Re: Script più colonne raggruppate nel grafico di distribuzione@txnelson ho usato questo script e ha funzionato. Quello che sto cercando di fare è automatizzare il mio rapporto, ma la mia tabella di dati è composta da oltre 300 colonne, il numero di colonne varia a settimana. Ho nomi di colonne che iniziano con ex. "Fail1", "Fail2",,, "Total1","Total2",,, "Yield1", "Yield2",,, "Loss1", "Loss2",,.Come filtrare per mostrare distribuzioni continue, ad esempio solo "Loss1", "Loss2"?
Re: Script più colonne raggruppate nel grafico di distribuzione@RonSwanson ,
Jim @txnelson Lo script di ti offre molto più controllo e una soluzione. Questa è un'opzione alternativa, dato che spesso mi è stato chiesto come scrivere facilmente un numero imprecisato di distribuzioni.Questo script include anche i comandi per "avvolgere" le distribuzioni e come inviare messaggi a tutte le distribuzioni inviando un messaggio all'oggetto (messaggio di Capability Analysis) e per inviare un messaggio all'icona di rivelazione.
Names default to Here(1);
dt = Open("$Sample_Data/Semiconductor Capability.jmp");
cnames = dt << get column names("Continuous", "string");
//Here I will just use 10
cnames = cnames[1::10];
dist = dt << Distribution(Columns(evalList(cnames)));
//if you want to limit the number per row
dist << arrange in rows(3); //change 3 to 5 or whatever you want
dist << Capability Analysis(0); //turn off the distribution
report(dist)[OutlineBox(2)] << Open all like this(1); //reveal all distributions
report(dist)[OutlineBox(2)] << Close all like this(1); //do not reveal

Re: Script più colonne raggruppate nel grafico di distribuzioneesattamente quello di cui avevo bisogno... grazie tx!!Re: Script più colonne raggruppate nel grafico di distribuzioneEcco un modo per generare il codice necessario per produrre ciò che desideri
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
// Get the all of the numeric, continuous column names
colNames = dt << get column names( string, continuous );
// Build a character string that represents the commands that need to be run
theExpr = "dis = dt << Distribution(
Continuous Distribution( column( column(dt, colNames[1])))";
// Loop across the remaining columns in the colNames list and generate the continuous distribution
// commands
For( i = 2, i <= N Items( colNames ), i++,
theExpr = theExpr || ", Continuous Distribution( column( column(dt, colNames[" || Char( i ) || "])))"
);
// place the closing ")" to complete the command string
theExpr = theExpr || ");";
// Execute the code generated and placed into the character string variable
Eval( Parse( theExpr ) );