Come aggiornare i limiti degli assi tramite Global BoxCiao,
Voglio controllare i limiti dell'asse Y di un grafico tramite le caselle globali (per consentire all'utente di modificare rapidamente i limiti senza fare doppio clic sulle proprietà dell'asse...).
Nello script allegato, creo una finestra e un grafico. Quindi aggiungo 2 Global Box (Lim1 e Lim2) che inizializzo.
Una volta generato il grafico, modifico i valori di Lim1 e Lim2 ma l'asse del grafico non viene aggiornato di conseguenza...non vedo cosa sbaglio.
Qualcuno può aiutare?
Grazie.
Ri: Come aggiornare i limiti dell'asse tramite Global BoxMi sono imbattuto nella tua domanda cercando di fare qualcosa di molto simile (imposta i limiti dell'asse in base ai dati su molti grafici in modo che i valori anomali non vengano persi). L'ho risolto impostando i limiti dell'asse su un'espressione da valutare (ovvero uguale al valore minimo - l'LSL o il punto dati più basso, opposto per max). Vedi sotto:
// Get min/max for Graph 1
dt = Current Data Table();
G1 = dt << Get Rows Where (:Column 1 == "Group1");
G1_Min = Eval( Min((LSL[1]*0.95), Min(:Column 2[G1])));
G1_Max = Eval( Max((USL[1]*1.05), Max(:Column 2[G1])));
dt << clear select;
// Get min/max for Graph 2 etc. repeat for each graph
dt = Current Data Table();
G2 = dt << Get Rows Where (:Column 1 == "Group2");
G2_Min = Eval( Min((LSL[2]*0.95), Min(:Column 2[G2])));
G2_Max = Eval( Max((USL[2]*1.05), Max(:Column 2[G2])));
dt << clear select;
// Assign axis limits and specification lines within the graph parameters (for Graph 1 - repeat for each)
Dispatch ({Min(G1_Min), Max(G1_Max), Inc( Eval((G1_Max - G1_Min) / 7))),
Add Ref Line( LSL[1], "Solid", "Medium Dark Blue", "LSL", 1 ),
Add Ref Line( USL[1], "Solid", "Medium Dark Blue", "USL", 1 )}* Nota: so che il tuo problema è stato risolto poiché sono trascorsi 4 anni, ma potrebbe aiutare altri con problemi simili.
Ri: Come aggiornare i limiti dell'asse tramite Global BoxNelson, Jeff,
Capisco il tuo ragionamento: utilizzare la piattaforma interattiva (trascina, sposta,...) degli assi è davvero molto utile...Tuttavia, per un paio di motivi, non mi è utile:
- La maggior parte dei grafici che genererò conterrà valori anomali che avranno un valore molto più alto rispetto al resto della popolazione. In questo caso, la soluzione interattiva è molto dispendiosa in termini di tempo e dolorosa...
- Intendo generare circa 30 grafici in una singola finestra: puoi immaginare che cambiare interattivamente i 30 grafici non sia un'opzione. avere una casella o un paio di caselle per impostare tutti i valori è più efficiente in termini di tempo.
Ad ogni modo, vedo che la soluzione di Nelson funziona bene. Sembra un grosso complesso: devo guardare nei dettagli cosa viene fatto.
molte grazie.
Ri: Come aggiornare i limiti dell'asse tramite Global BoxHo cambiato un po' il formato, solo perché non ero sicuro di cosa stesse facendo tutto. Tuttavia, di seguito è riportato un esempio di come generalmente gestisco l'articolo che stai mettendo in discussione. La mia domanda più grande è: in realtà non è più semplice trascinare e spostare l'impostazione dell'asse in modo più semplice per i tuoi utenti, che digitare effettivamente i valori minimo e massimo?
Names Default To Here( 1 );
//DataPath = "C:\Program Files (x86)\SAS\JMP\11\Samples\Data\Variability Data\Wafer.jmp";
myTable = Open( "$SAMPLE_DATA\Variability Data\Wafer.jmp" );
Param = "Y";
Lim1 = 40;
Lim2 = 160;
FrameSize_X = 775;
FrameSize_Y = 200;
MyWindow = New Window( "Window Controls",
gr = MyTable << Variability Chart(
Y( :Name( "Y" ) ),
X( :Operator, :Wafer ),
Max Iter( 100 ),
Std Dev Chart( 1 ),
Show Range Bars( 0 ),
Show Grand Median( 0 ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
Show Box Plots( 1 ),
Automatic Recalc( 1 ),
SendToReport(
Dispatch(
{"Variability Chart for Y"},
"2",
ScaleBox,
{Min( Lim1 ), Max( Lim2 ), Inc( Abs( Lim2 - Lim1 ) / 10 ), Minor Ticks( 0 ),
Show Major Grid( 1 ), Show Minor Grid( 1 ), Inside Ticks( 1 )}
),
Dispatch( {"Variability Chart for Y"}, "Y", TextEditBox, {Set Text( Param )} ),
Dispatch(
{"Variability Chart for Y"},
"Variability Chart",
FrameBox,
{Frame Size( FrameSize_X, FrameSize_Y ), ,
Row Legend(
Name( "Operator" ),
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
),
Dispatch(
{"Variability Chart for Y"},
"Varability Std Chart",
FrameBox,
{Frame Size( FrameSize_X, FrameSize_Y )}
)
)
),
Panel Box( "1/ Start...",
g3 = V List Box(
H List Box(
Text Box( "Lim 1" ),
n1 = Number Edit Box(
Lim1,
5,
<<SETFUNCTION></SETFUNCTION>Ri: Come aggiornare i limiti dell'asse tramite Global BoxIl problema è che la variabile globale viene utilizzata per impostare gli assi quando viene creato il grafico, ma il grafico non ha alcuna relazione con la variabile globale dopo.
Ci sono modi per creare l'interattività che stai cercando (e sono sicuro che qualcuno qui può fornire un prototipo) ma per favore non trascurare l'interattività incorporata dell'asse di ogni grafico in JMP. Tutto quello che devi fare è passare il mouse sopra l'asse e il cursore si trasformerà in una mano e puoi fare clic e trascinare per cambiare l'asse.

Faresti un ottimo servizio ai tuoi utenti insegnando loro questo.In questo modo, avranno il controllo su ogni grafico che vedono in JMP, non solo su quelli che crei per loro e fornisci loro comodi controlli per le caselle di testo.