È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome della colonna?Lo script seguente traccia alcune colonne (parametri multipli sull'asse Y) con nomi di colonne che iniziano con P nel Costruttore di grafici. Voglio tracciare contemporaneamente alcune altre colonne con nomi di colonne che iniziano con N nella PAGINA successiva (comando commentato nel mio script di seguito).
Nella prossima PAGINA vorrei tracciare alcune altre colonne con i nomi delle colonne che iniziano con, diciamo V e così via.
Le informazioni sulla categoria della colonna possono essere predefinite in una tabella dati separata o in qualsiasi altra forma, forse un elenco (su questo sono flessibile). La domanda è se ciò è fattibile tramite JSL e, in caso affermativo, come?
Names Default To Here (1);
clear log ();
dt = open( "$SAMPLE_DATA\semiconductor capability.jmp" );
dt << Ungroup Columns();
Graph Builder(Size( 1469, 718 ),
Variables(X( :lot_id ), Y( :PLG2 ), Y( :PNP4 ), Y( :PNP3 ), Y( :PNP2 ), Y( :PNP1 )),
//Page(:ColumCategory)
Elements( Position( 1, 1 ), Box Plot( X, Y, Legend( 14 ) ) ),
Elements( Position( 1, 2 ), Box Plot( X, Y, Legend( 12 ) ) ),
Elements( Position( 1, 3 ), Box Plot( X, Y, Legend( 11 ) ) ),
Elements( Position( 1, 4 ), Box Plot( X, Y, Legend( 9 ) ) ),
Elements( Position( 1, 5 ), Box Plot( X, Y, Legend( 10 ) ) ),
);
Automazione e scriptingfinestreRi: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?La pagina viene utilizzata per il raggruppamento basato su righe, quindi non può essere utilizzata per ciò che desideri fare. Potresti avere un elenco di colonne per ciascun gruppo, quindi ripetere l'elenco aggiungendo generatori di grafici separati a una nuova finestra con la casella di riepilogo V, ad esempio.
Ri: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?Anche riformattare la tabella dati non aiuta: i singoli gruppi Y mostrano tutti gli elementi:

Se si tratta solo di dividere i sottogruppi di colonne, potresti usare a Filtro dati invece di Pagina :

Names Default To Here (1);
clear log ();
dt = open( "$SAMPLE_DATA\semiconductor capability.jmp" );
dt << Ungroup Columns();
dtstacked = dt << Stack(
columns(
:NPN1, :PNP1, :PNP2, :NPN2, :PNP3, :IVP1, :PNP4, :NPN3, :IVP2, :NPN4, :SIT1,
:INM1, :INM2, :VPM1, :VPM2, :VPM3
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
"Non-stacked columns"n( Keep( :lot_id, :wafer, :Wafer ID in lot ID, :SITE ) )
);
dtstacked << new column("first_Label", Formula( Left( :Label, 1 ) ));
dtstacked << Graph Builder(
Size( 571, 449 ),
Show Control Panel( 0 ),
Fit to Window,
Variables(
X( :lot_id ),
Y( :Data ),
Page( :first_Label ),
Group Y( :Label ),
Color( :Label )
),
Elements( Box Plot( X, Y, Legend( 16 ) ) ),
Local Data Filter(
Add Filter(
columns( :first_Label ),
Where( :first_Label == "N" ),
Display( :first_Label, N Items( 5 ) )
)
)
)Ri: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?@hogi @jthi OK. Grazie. Un'idea alternativa sarebbe quella di posizionare/inviare la prima finestra del generatore di grafici con una serie di colonne tracciate in una finestra di journal, la serie successiva di nuove colonne tracciate sotto la prima e così via, quindi chiudere le finestre dei grafici aperte e le tabelle di dati associate. Come farlo tramite JSL?
Ri: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?Crea un elenco di elenchi che contengono le colonne che ti interessano e ripetilo mentre crei i generatori di grafici e li aggiungi alla casella di riepilogo journal / v. Tutte le colonne hanno le stesse dimensioni o la quantità dell'asse Y cambia?
Ri: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?Ecco un'opzione, ma questa non è l'unica che potresti usare
Names Default To Here(1);
create_graph = Function({dt, ycollist}, {Default Local},
vlb = V List Box(
gb = dt << Graph Builder(Variables(X(:lot_id)))
);
For Each({colname, idx}, ycollist,
gb << Add Variable({Eval(colname), Role("Y")});
gb << Add Element(1, idx, {Type("Box Plot"), X, Y}); // define boxplots
gb << Remove Element(1, idx, 1); // remove points
);
return(vlb);
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open("$SAMPLE_DATA\semiconductor capability.jmp");
// could also just create journal and add new_vlb to that
nw = New Window("Collector",
vlb = V List Box()
);
For Each({my_group}, my_groups,
new_vlb = create_graph(dt, my_group);
vlb << Append(new_vlb);
);
nw << journal;
nw << Close Window;
my_j = Current Journal();
Write();Ri: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?Se disponi di colonne diverse per ciascun caso/gruppo, dovrai aggiungere il JSL per modificare il valore di "my_group" per ogni modifica.
Probabilmente puoi farlo aggiungendo un ulteriore For Each() all'esterno dell'attuale For Each( {my_group), dove cambi il valore di my_group prima di rientrare nell'attuale For Each().
Ti suggerisco di provarlo e, se riscontri più problemi, di tornare nella community con altre domande.
Ri: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?@jthi Il numero di colonne tracciate sull'asse y sarà diverso per ciascun caso/gruppo.
Ri: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?@jthi @txnelson Grazie.
I miei parametri da tracciare sono raggruppati come nella tabella seguente. Lo scopo è quello di aggiungere ciascun gruppo sotto l'altro nel diario. Inoltre, vorrei che la voce del gruppo fosse il titolo del grafico per ciascuno.Come modificare il JSL sopra in questo caso?

Ri: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?Nel tuo caso utilizzerei quindi un array associativo in cui la chiave sarebbe il nome del gruppo e i valori sarebbero un elenco di parametri (colonne). Quindi esegui il ciclo su questo array associativo utilizzando For Each mentre costruisci il tuo diario
Ri: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?@txnelson @hogi . Grazie per i vostri suggerimenti. Ritorno su questo argomento dopo una breve pausa.
@jthi Eseguendo questa parte del tuo script nel mio JMP 16.2
Names Default To Here(1);
create_graph = Function({dt, ycollist}, {Default Local},
vlb = V List Box(
gb = dt << Graph Builder(Variables(X(:lot_id)))
);
For Each({colname, idx}, ycollist,
gb << Add Variable({Eval(colname), Role("Y")});
gb << Add Element(1, idx, {Type("Box Plot"), X, Y}); // define boxplots
gb << Remove Element(1, idx, 1); // remove points
);
return(vlb);
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open("$SAMPLE_DATA\semiconductor capability.jmp");
// could also just create journal and add new_vlb to that
nw = New Window("Collector",
vlb = V List Box()
);
For Each({my_group}, my_groups,
new_vlb = create_graph(dt, my_group);
vlb << Append(new_vlb);
);dà

cioè
{"PNP1", "PNP2", "PNP3"} E
{"NPN3", "NPN2", "NPN1", "NPN4"}non sono tracciati sull'asse y come menzionato nel mio primo post (cioè uno sopra l'altro con le linee di riferimento del limite specifico visibili) e su due grafici separati.
Come accennato in precedenza, i miei parametri da tracciare sono raggruppati come nella seguente tabella separata
Names Default To Here( 1 );
dtg = New Table( "Parameter Groups",
Add Rows( 11 ),
New Column( "Parameter", Character, Nominal,
Set Values( {"PNP1", "PNP2", "NPN2", "NPN3", "INV2", "NPN1", "PNP3", "NPN4", "INV3", "PNP6", "INV4"} ) ),
New Column( "Group", Character, Nominal, Set Values( {"DC", "DC", "AC","AC","RF","AC","DC","AC", "RF", "DC", "RF"} ) )
);Vorrei che i parametri in ciascun grafico fossero raggruppati in base alla voce nella colonna Gruppo della tabella sopra.
ad esempio, la trama superiore ha una tessera di DC con "PNP1", "PNP2", "PNP3" e "PNP6" tracciato sull'asse y e sotto di esso il grafico successivo con titolo AC con "NPN2", "NPN3", "NPN1" e "NPN4" tracciati ed infine la terza tabella in basso con titolo "RF" con "INV2" e "INV4 " tracciato sull'asse y.
Potrei per favore ricevere aiuto con l'approccio dell'array associativo per procedere? In questo modo posso ottenere l'unico Gruppi , ma come ottenere l'associated Parametri (usa Ottieni righe dove ()) ?
gg = Associative Array (dt:Group);
gg << get keys;
( @jthi , preferisco l'opzione della finestra "collezionista" oltre al diario in quanto ci offre maggiore flessibilità a seconda di ciò che voglio guardare)
Ri: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?Utilizzando JMP 16, sono riuscito a ricreare il problema che stai riscontrando.Non sono riuscito a utilizzare Aggiungi variabili, ecc. Per ottenere i risultati desiderati.Tuttavia, utilizzando una tecnica in cui il Graph Builder JSL viene creato in una variabile stringa e quindi eseguito, sono riuscito a ottenere i box plot

Names Default To Here( 1 );
create_graph = Function( {dt, ycollist},
{Default Local},
theExpr =
"vlb = V List Box(
gb = dt << Graph Builder(Size( 1469, 718 ),Variables(X(:lot_id)";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Y(:\!"" || colname || "\!"n)"
);
theExpr = theExpr || ")";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Elements( Position( 1," || Char( idx ) ||
" ), Box Plot( X, Y) ) "
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );
Return( vlb );
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// could also just create journal and add new_vlb to that
nw = New Window( "Collector", vlb = V List Box() );
For Each( {my_group}, my_groups,
new_vlb = create_graph( dt, my_group );
vlb << Append( new_vlb );
);Ri: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?@txnelson Funziona nella versione 16.2 (JMP lamenta errori di sintassi ma traccia comunque il grafico).
Se ho un'altra lista
paraGroupList = {"DC", "AC"};Come faccio ad assegnare DC come titolo del grafico (attualmente PNP1 e altri 2 rispetto a lot_id ) durante la stampa (grafico superiore)
{"PNP1", "PNP2", "PNP3"}E AC come titolo del grafico (attualmente NPN3 e altri 3 rispetto a lot_id ) per quando si traccia (grafico in basso)?
{"NPN3", "NPN2", "NPN1", "NPN4"}Ri: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?Esegui il grafico.
Clicca sul titolo e modificalo.
Quindi vai al triangolo rosso e seleziona per salvare lo script.
Guarda nello script e vedrai il JSL e come ha cambiato il titolo.
Adottatelo nella vostra sceneggiatura.
Ti consiglio vivamente di dedicare del tempo alla lettura della Guida allo scripting.Accelererà il tuo apprendimento di JSL
Ri: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?@txnelson Grazie, ho capito come fare il titolo del grafico.
Come uscire dal crea_grafo funzione se ycollist è vuoto?
Ri: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?utilizzare la funzione Length() per verificare se l'elenco contiene voci, quindi ignorare il codice;
Ri: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?@txnelson Grazie.Sembra che non posso usarlo rottura () all'interno della mia funzione di disegno se viene utilizzato all'interno di un ciclo for. Vedrò quali opzioni ho.
Ri: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?Effettua semplicemente la valutazione necessaria e, se non viene soddisfatta, ignora il codice.Vedi sotto:
Names Default To Here( 1 );
create_graph = Function( {dt, ycollist},
{Default Local},
theExpr =
"vlb = V List Box(
gb = dt << Graph Builder(Size( 1469, 718 ),Variables(X(:lot_id)";
For Each( {colname, idx}, ycollist,
If( Length( colname ) != 0,
theExpr = theExpr || ",Y(:\!"" || colname || "\!"n)"
);
theExpr = theExpr || ")";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Elements( Position( 1," || Char( idx ) ||
" ), Box Plot( X, Y) ) "
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );
);
Return( vlb );
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// could also just create journal and add new_vlb to that
nw = New Window( "Collector", vlb = V List Box() );
For Each( {my_group}, my_groups,
new_vlb = create_graph( dt, my_group );
vlb << Append( new_vlb );
);Ri: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?@txnelson Grazie. L'esecuzione dello script mi dà errori (su JMP 16.2) di cui non riesco a eliminare.

Ri: È possibile tracciare le colonne nel generatore di grafici e separarle per PAGINA utilizzando le categorie del nome di una colonna?Scusate, mi sono affrettato alla risposta precedente.Il JSL seguente ignorerà la creazione del grafico se my_group è vuoto
Names Default To Here( 1 );
create_graph = Function( {dt, ycollist},
{Default Local},
theExpr =
"vlb = V List Box(
gb = dt << Graph Builder(Size( 1469, 718 ),Variables(X(:lot_id)";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Y(:\!"" || colname || "\!"n)"
);
theExpr = theExpr || ")";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Elements( Position( 1," || Char( idx ) ||
" ), Box Plot( X, Y) ) "
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );
Return( vlb );
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// could also just create journal and add new_vlb to that
nw = New Window( "Collector", vlb = V List Box() );
For Each( {my_group}, my_groups,
If( Length( my_group ) != 0,
new_vlb = create_graph( dt, my_group );
vlb << Append( new_vlb );
vlb = V List Box();
)
);