Come ottenere i limiti dalla colonna e utilizzarlo per altre colonne tramite JSL?La tabella dati allegata presenta i limiti (LSL/USL) per ciascun parametro misurato (corrente, resistenza) nelle rispettive colonne.
Senza modificare il formato della tabella dati, come faccio a visualizzare i limiti per ciascun parametro come linee di riferimento, ad esempio quando la mediana viene tracciata rispetto a PartID (come nello script nella tabella dati allegata)?
Un modo in cui posso pensare di farlo è salvare LSL/USL nelle proprietà della colonna per ciascun parametro, ma per questo ho bisogno dell'aiuto di JSL.
finestreRi: Come ottenere i limiti dalla colonna e utilizzarlo per altre colonne tramite JSL?La cosa più semplice (e secondo me la migliore) sarebbe cambiare il formato della tabella ma poiché non puoi farlo, le altre opzioni utilizzerebbero le proprietà della colonna (sarebbe un po' strano in quanto avresti limiti per i limiti) o uno script grafico . Per prima cosa dovresti raccogliere tutti i limiti possibili per ciascuna colonna (possono esserci limiti diversi per le stesse colonne?), il riepilogo dovrebbe funzionare abbastanza bene per questo, e quindi, a seconda della tua scelta, aggiungilo come proprietà della colonna o usalo con scritta grafica.
Ri: Come ottenere i limiti dalla colonna e utilizzarlo per altre colonne tramite JSL?Ecco come gestirei il tuo tavolo.Sposta tutti i valori USL e LSL nella proprietà della colonna per ciascuna colonna, quindi i limiti vengono visualizzati automaticamente quando si rappresentano graficamente le colonne

Names Default To Here( 1 );
dt = Current Data Table();
colNamesList = dt << get column names( string, numeric );
For Each( {col}, colNamesList,
LSL = Column( col )[(dt << get rows where( :Label == "LSL" ))[1]];
USL = Column( col )[(dt << get rows where( :Label == "USL" ))[1]];
Eval(
Substitute(
Expr(
Column( col ) << set property(
"spec limits",
{LSL( _LSL_ ), USL( _USL_ ), Show Limits( 1 )}
)
),
Expr( _USL_ ), USL,
Expr( _LSL_ ), LSL
)
);
);
// Uncomment the below 2 lines to delete the LSL and USL rows in the table
//dt << select where(:Label == "LSL" | :Label=="LSL");
//dt << delete rows;
Graph Builder(
Size( 570, 578 ),
Variables( X( :partID ), Y( :Current ), Y( :Resistance ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 8 ), Jitter( "None" ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 6 ), Jitter( "None" ) ) ),
Local Data Filter( Add Filter( columns( :Label ), Where( :Label == {"Median"} ) ) )
);
Ri: Come ottenere i limiti dalla colonna e utilizzarlo per altre colonne tramite JSL?@txnelson @jthi
Grazie, proverò subito la tua soluzione. Volevo fare qualcosa di simile ma non riesco a far funzionare la seguente funzione. L'idea è di applicarlo a un gruppo di colonne dopo aver raggruppato tutte le colonne dei parametri testati. L'ho provato per una colonna del parametro testato (corrente) ma non ha funzionato. Funziona bene quando vengono passati i numeri per i limiti ma non quando vengono passate le variabili. Dove ho sbagliato (ho provato con e senza Eval() ed Expr()).
Names Default To Here( 1 );
setSpecLimits = Function( {dt_ref, colName, _LSL, _USL},
{specLimits},
tmp = Eval( Expr( dt_ref:colName << Set Property( "Spec Limits", {LSL( _LSL ), USL( _USL ), Show Limits( 1 )} ) ) );
Return( specLimits ); //optional
);
////Check
Clear Log();
//test before
specLims = Data Table( "exampleData" ):Current << Get Property( "Spec Limits" ); Show( specLims );
//New values
_LSL = Data Table( "exampleData" ):Current[2]; Show( _LSL );
_USL = Data Table( "exampleData" ):Current[3]; Show( _USL );
dt_ref = Data Table( "exampleData" ); show (dt_ref);
colName = "Current"; Show( colName );
//call function
setSpecLimits( dt_ref, colName, _LSL, _USL );
//test after
specLims = Data Table( "exampleData" ):Current << Get Property( "Spec Limits" ); Show( specLims );
Ri: Come ottenere i limiti dalla colonna e utilizzarlo per altre colonne tramite JSL?Questo dovrebbe risolvere il problema
setSpecLimits = Function( {dt_ref, colName, _LSL, _USL},
{specLimits},
tmp = Eval(
eval Expr(
dt_ref:colName << Set Property( "Spec Limits", {LSL( expr(_LSL) ), USL( expr(_USL ) ), Show Limits( 1 )} )
)
);
Return( specLimits ); //optional
);Ri: Come ottenere i limiti dalla colonna e utilizzarlo per altre colonne tramite JSL?Invece di Sostituire , puoi anche usare Valutazione (Val Espr( ...Exp())) :
Eval(EvalExpr(dt_ref:colName << Set Property( "Spec Limits", {LSL(Expr(_LSL )), USL(Expr( _USL) ), Show Limits( 1 )} )))Per pre-valutare i limiti delle specifiche _LSL & _USL devono essere dentro Espr () e ottieni una pre-valutazione tramite EsprValuta() .
Dopo averlo fatto, è possibile valutare l'intera espressione tramite Valutazione()
Ri: Come ottenere i limiti dalla colonna e utilizzarlo per altre colonne tramite JSL?@txnelson Grazie. Eval Expr() fa il trucco.
Come posso modificare le linee di riferimento delle specifiche in tratteggiate e cambiare il colore della linea tratteggiata in rosso?
Ri: Come ottenere i limiti dalla colonna e utilizzarlo per altre colonne tramite JSL?Potresti usare la GUI:

Ri: Come ottenere i limiti dalla colonna e utilizzarlo per altre colonne tramite JSL?o JSL:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt:height << Set Property("Spec Limits",{LSL( 57 ), USL( 67 )});<BR /><BR /><BR />
gb = dt << Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) ),
);
specs=dt:height << Get Property("Spec Limits");
LSL=specs["LSL"];
USL=specs["USL"];
report(gb)[ScaleBox(1)] <<{ Add Ref Line( LSL, "Dashed", "Red", "LSL", 1 ),
Add Ref Line( USL, "Dashed", "Red", "USL", 1 )}Ri: Come ottenere i limiti dalla colonna e utilizzarlo per altre colonne tramite JSL?@hogi Grazie. Stavo cercando il modo JSL per cambiare la linea continua in linea tratteggiata e il colore predefinito quando i limiti delle specifiche vengono definiti e salvati nelle proprietà della colonna e quindi tracciati automaticamente da JMP (come nel post 3 di @txnelson ).
Ri: Come ottenere i limiti dalla colonna e utilizzarlo per altre colonne tramite JSL?Utilizzando la funzione "Mostra limiti" dei limiti delle specifiche, viene visualizzata solo una linea blu continua.Se vuoi visualizzare i limiti, specificando il colore, l'etichetta, il tipo di linea, ecc. utilizzando JSL, dovrai scrivere il codice per utilizzare il messaggio
obj << add ref line(......);
capacità.
Vedi l'indice degli script per la descrizione e l'esempio
Ri: Come ottenere i limiti dalla colonna e utilizzarlo per altre colonne tramite JSL?All'inizio è un po' "deludente": perché non è possibile cambiare il colore se utilizzo questa fantastica funzione "mostra limiti".
Ma in realtà è possibile, con la GUI. Basta usare mostra limiti(1) e vai alle impostazioni dell'asse.
E d'altra parte:
Se vuoi cambiare il colore tramite JSL, il piccolo codice aggiuntivo a aggiungere le linee mentre si cambia colore non infastidiscono troppo, vero?
Si potrebbe pensare di impostare lo stile colore/linea predefinito nelle preferenze.
completamente automatico - no JSL - nessuna modifica manuale - solo le linee come le vuoi tu.