Scripting Column Switcher per raggiungere le modifiche nella variabile Y su un grafico di controlloHo una tabella dati con numerose risposte (numerose colonne). Sono tutti validi per essere inseriti nella carta di controllo.
Quando aggiungo un commutatore di colonna posso, come previsto, passare facilmente da una risposta all'altra (colonne diverse) per aggiornare il grafico di controllo in modo da poter visualizzare immediatamente la variabile di interesse.
L'unico inconveniente è che l'asse x ha sempre, per impostazione predefinita, la stessa lunghezza ma il numero di dati in ciascuna colonna varia; a volte molto ma a volte no.
Per adattare l'asse x al numero di dati in una determinata colonna posso fare questo:
nData = N Rows() - Col N Missing( Column( 1 ) );
ccReport = cc << Report;
axisbox = ccReport[axis box( 1 )];
axisbox << Max( nData + 3 ) << inc( Ceiling( (nData + 3) / 15 ) );
Funziona benissimo per il primo grafico di controllo, ma non appena seleziono un'altra variabile utilizzando il commutatore di colonna, l'asse x risulta ancora una volta troppo lungo, tornando alle impostazioni predefinite. (Se N Rows() è ad esempio 3.000 ma per una variabile ho 60 dati, il grafico risultante sembra sciocco perché l'asse x è troppo lungo.)
Utilizzando JSL, come posso creare script in modo che ogni volta che seleziono un'altra colonna utilizzando il commutatore di colonna posso utilizzare il codice sopra (o equivalente) per regolare l'asse x in modo che si adatti bene al numero di dati effettivi per la variabile in questione?
Vedo che questa sintassi "ColumnSwitcherObject << Get Current;" restituisce il nome della colonna ma come posso accedere con JSL ogni volta che aggiorno utilizzando il commutatore di colonne?
Grazie per qualsiasi aiuto.
Automazione e scriptingPersonalizzazione di massaIngegneria della qualità e dei processiRi: Scripting Column Switcher per raggiungere le modifiche nella variabile Y su un grafico di controlloGrazie, Jim. Funziona alla grande adesso.
Ri: Scripting Column Switcher per raggiungere le modifiche nella variabile Y su un grafico di controlloPiuttosto che ambientare
ccReport = cc << Report;
Penso che dovresti fare riferimento alla fonte quando lo usi
report(cc)[AxisBox(1)] << max(X+1);
Di seguito è riportato uno script di esempio che raccoglie i riferimenti corretti da cc
names default to here(1);
dt=current data table();
cc = Control Chart Builder(
Size( 534, 464 ),
Show Control Panel( 0 ),
Show Capability( 0 ),
Variables( Y( :weight ) ));
cs = cc << Column Switcher( :weight, {:height, :weight} );
report(cc)[FrameBox(1)]<< add graphics script( show(cs<<GET current=""></GET>Ri: Scripting Column Switcher per raggiungere le modifiche nella variabile Y su un grafico di controlloGrazie, Jim.
Utilizzando il framebox, come suggerisci, posso infatti mostrare nel registro incorporato la colonna selezionata per aggiornare la carta di controllo. (Ho 12 colonne tra le quali vorrei passare e ciascuna colonna ha un numero diverso di dati, da qui il desiderio di ridimensionare l'asse x in ogni caso per riflettere il numero di dati nella colonna selezionata.)
Catturo la colonna selezionata abbastanza facilmente:
ccReport[FrameBox(1)]<< add graphics script(
cName = cs << Get Current;
show(cName);
If(cName == "JW004",
show("JW004 selected");
,
cName == "JW001",
show("JW001 selected");
,
);
In altre parti della sintassi posso facilmente modificare l'asse x usando ad es
ccReport = cc << Report;
axisbox = ccReport[axis box( 1 )];
axisbox << max(x+1); // where x is the no. of data in the column
Il problema arriva se inserisco la sintassi axisbox nel framebox. Uno degli errori è
Send Expects Scriptable Object in access or evaluation of 'Send' , ccReport[axis box( 1 )] << /*###*/Max( 200 ) /*###*/
Ho provato alcune cose ma senza alcun risultato. Hai qualche suggerimento per poter continuare ad accedere al riquadro dell'asse dallo script grafico? Sarebbe molto apprezzato.
Ri: Scripting Column Switcher per raggiungere le modifiche nella variabile Y su un grafico di controlloPenso che tu possa risolvere il tuo problema allegando uno script grafico a FrameBox() nella tabella di controllo.Lo script verrà eseguito ogni volta che viene modificato qualcosa in FrameBox().Di seguito è riportato un semplice script su cui credo dovresti essere in grado di sviluppare
names default to here(1);
dt=current data table();
cc = Control Chart Builder(
Size( 534, 464 ),
Show Control Panel( 0 ),
Show Capability( 0 ),
Variables( Y( :weight ) ));
cs = cc << Column Switcher( :weight, {:height, :weight} );
report(cc)[FrameBox(1)]<< add graphics script( show(cs<<GET current=""></GET>