impostazione del limite delle specifiche sulla proprietà della colonna tramite JSL - linee non mostrate sul graficoCIAO
Ho uno script che assegna i limiti delle specifiche (USL/LSL) alla proprietà delle colonne, quindi crea un grafico della colonna e mi aspetto
per vedere le linee limite disegnate sulla trama. Quello che succede è che i limiti sono impostati correttamente nella tabella, ma non visibili sul grafico.
Se disegno manualmente la stessa trama su questa colonna dopo aver eseguito lo script, nessuna riga di nuovo.
Se apro la finestra delle proprietà delle specifiche della colonna, vedo i limiti, la "mostra linea di riferimento" è attiva.
solo se premo "Applica" e poi traccia di nuovo, posso vedere le linee sulla trama come previsto. Ma non riesco a farlo funzionare tramite script ..
qualche idea?
(utilizzando JMP PRO 15)


Modellazione statistica avanzataAutomazione e scriptingAccesso ai datiPersonalizzazione di massaQualità e ingegneria di processofinestreRi: impostazione del limite delle specifiche sulla proprietà della colonna da parte di JSL - linee non mostrate sul graficoJim, grazie che ha funzionato.
Ri: impostazione del limite delle specifiche sulla proprietà della colonna da parte di JSL - linee non mostrate sul graficoQuesto JSL dovrebbe fare il trucco
// Your code
datacolnames = res_thk_specs:colname << get values;
specExpr = Expr(
Column( Res_Thk_Data, name ) <<
Set Property(
"Spec Limits",
{LSL( Expr( lower ) ), USL( Expr( upper ) ),
TARGET( Expr( target ) ), Show Limits( 1 )}
)
);
For( i = 1, i <= N Rows( RES_THK_SPECS ), i++,
name = Column( RES_THK_SPECS, "COLNAME" )[i];
lower = Column( RES_THK_SPECS, "LSL" )[i];
upper = Column( RES_THK_SPECS, "USL" )[i];
target = Column( RES_THK_SPECS, "TARGET" )[i];
_unit_ = Column( RES_THK_SPECS, "UOM" )[i];
If( Contains( datacolnames, name ),
Eval( Eval Expr( specExpr ) )
);
If( Contains( datacolnames, name ),
Column( Res_Thk_Data, name ) << Set Property( "Units", eval( _unit_ ) )
);
);Ri: impostazione del limite delle specifiche sulla proprietà della colonna da parte di JSL - linee non mostrate sul graficoJim, grazie per la risposta.Ho corso e i limiti sono stati aggiunti alla tabella.La parte con cui ho problemi è l'aggiunta di unità alle proprietà della colonna.Quando rimuovo i commenti dal mio codice, la proprietà della colonna delle unità viene riempita, ma non con il valore desiderato di pollici o libbre.Invece entrambi vengono riempiti con il valore di List.Non mi è chiaro cosa mi manca nella dichiarazione di espressione o nella dichiarazione di valutazione per trasferire il testo dalla cella della tabella dati.Qualsiasi aiuto sarebbe
apprezzato.
Ri: impostazione del limite delle specifiche sulla proprietà della colonna da parte di JSL - linee non mostrate sul graficoEcco un semplice esempio che funziona usando il tuo codice.Se ancora non funziona sulle tue tabelle di dati, cerca incoerenze con i nomi delle colonne
Names Default To Here( 1 );
res_thk_specs = New Table( "thelookup",
Add Rows( 2 ),
New Column( "UOM",
Character,
"Nominal",
Set Values( {"inches", "lbs"} ),
Set Display Width( 48 )
),
New Column( "TARGET",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [60, 115] )
),
New Column( "USL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [70, 172] )
),
New Column( "LSL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [50, 60] ),
Set Display Width( 89 )
),
New Column( "colname",
Character,
"Nominal",
Set Values( {"height", "weight"} ),
Set Display Width( 0 )
)
);
res_thk_data = New Table( "thedata",
Add Rows( 5 ),
New Column( "height",
Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Values( [59, 61, 55, 66, 52] )
),
New Column( "weight",
Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Selected,
Set Values( [95, 123, 74, 145, 64] )
)
);
// Your code
datacolnames = res_thk_specs:colname << get values;
specExpr = Expr(
Column( Res_Thk_Data, name ) <<
Set Property(
"Spec Limits",
{LSL( Expr( lower ) ), USL( Expr( upper ) ),
TARGET( Expr( target ) ), Show Limits( 1 )}
)
);
//unitExpr = Expr(
// column ( Res_Thk_Data, name ) << Set Property(
// "Units", { _unit_ }
// )
//);
For( i = 1, i <= N Rows( RES_THK_SPECS ), i++,
name = Column( RES_THK_SPECS, "COLNAME" )[i];
lower = Column( RES_THK_SPECS, "LSL" )[i];
upper = Column( RES_THK_SPECS, "USL" )[i];
target = Column( RES_THK_SPECS, "TARGET" )[i];
_unit_ = Column( RES_THK_SPECS, "UOM" )[i];
If( Contains( datacolnames, name ),
Eval( Eval Expr( specExpr ) )
);
// If( Contains( datacolnames, name ),
// Eval( Eval Expr( unitExpr ) )
// );
);Ri: impostazione del limite delle specifiche sulla proprietà della colonna da parte di JSL - linee non mostrate sul graficoUso un metodo molto simile per prendere i limiti da una tabella dei limiti per aggiungere limiti di specifica alle proprietà della colonna.Volevo provare a utilizzare un metodo simile per aggiornare le unità in base al valore nella tabella dei limiti.Attualmente commentato in code show, ma quando eseguo ottengo un valore di "Elenco" come proprietà dell'unità invece dell'unità desiderata.Penso che questo sia un problema di sintassi, ma finora non ho trovato la sintassi corretta per l'istruzione eval expr.
Ri: impostazione del limite delle specifiche sulla proprietà della colonna da parte di JSL - linee non mostrate sul graficoNon sono sicuro del motivo per cui si comporta così senza le parentesi graffe perché usarle sembra essere la sintassi corretta Guida di JMP - Proprietà colonna
col << Set Property( "propertyName", {argument list} );
JMP deve salvare alcune informazioni internamente, perché se esegui il comando SENZA parentesi graffe e controlli le proprietà della colonna, sembra a posto ma se usi Copia proprietà colonna ottieni solo il primo argomento (perché non hai un elenco di argomenti):
Add Column Properties(
Set Property("Notes", "Explore data adventurously"),
Set Property("Spec Limits", LSL(50))
)
Quindi, dopo aver premuto Applica nella proprietà della colonna Limiti specifica, gli argomenti vengono aggiornati nell'elenco corretto:
Add Column Properties(
Set Property("Notes", "Explore data adventurously"),
Set Property("Spec Limits", {LSL(50), USL(150), Show Limits(1)})
)Ri: impostazione del limite delle specifiche sulla proprietà della colonna da parte di JSL - linee non mostrate sul graficoGrazie ! in effetti l'aggiunta delle parentesi graffe ha risolto il problema 
Puoi spiegare perché è
Ri: impostazione del limite delle specifiche sulla proprietà della colonna da parte di JSL - linee non mostrate sul graficoSembra che tu stia applicando i limiti dopo la visualizzazione iniziale del grafico.I limiti vengono tracciati quando il grafico viene inizialmente visualizzato e, se i limiti vengono aggiunti dopo quel punto, il grafico dovrà essere ridisegnato per visualizzarli.
Ri: impostazione del limite delle specifiche sulla proprietà della colonna da parte di JSL - linee non mostrate sul graficoLa sintassi sembra essere leggermente sbagliata, devi aggiungere {} dopo i limiti delle specifiche. Vedi sotto lo script, il peso non funzionerà senza premere applica e l'altezza lo farà.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Column(dt, "weight") << Set Property("Spec Limits", LSL(50), USL(150), Show Limits(1));
Column(dt, "height") << Set Property("Spec Limits", {LSL(50), USL(100), Show Limits(1)});
gb = dt << Graph Builder(
Size(534, 456),
Show Control Panel(0),
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(4)), Smoother(X, Y, Legend(5)))
);Ri: impostazione del limite delle specifiche sulla proprietà della colonna da parte di JSL - linee non mostrate sul graficograzie per la pronta risposta! Presumo che il codice non sia realmente rilevante, poiché ottiene i limiti delle specifiche impostati correttamente nelle proprietà della colonna.
imposta LSL e USL e mostra Limits (1), ma il grafico non li mostra anche se sono impostati correttamente.
Anche se uso un codice semplice con numeri fissi, si comporta allo stesso modo..
Column(DATA_DT,param) << Set Property( "Spec Limits", LSL( 0.31 ),USL(0.34),Show Limits(1) );

Solo dopo aver premuto "applica" e disegnato di nuovo il grafico, mostra le linee.
Ri: impostazione del limite delle specifiche sulla proprietà della colonna da parte di JSL - linee non mostrate sul graficoCIAO @shlomi_bakish ,
Puoi fornire un esempio del tuo codice JSL? Questo potrebbe aiutare a diagnosticare il problema che stai riscontrando. Nel frattempo, questa parte di codice è un esempio di come è possibile impostare i limiti delle specifiche per le colonne e assicurarsi che siano attivate per la rappresentazione grafica.
//Turn on spec lines for graphs
dt = Current Data Table( ); //just a way of setting the current data table to the variable dt
<BR />dt_ColNames = dt << Get Column Names( string ); //Gets the column names from the data table
<BR />For( i = 1, i <= N Items( dt_ColNames ), i++,<BR />
spec = Column( dt, dt_ColNames[i] ) << Get Property( "Spec Limits" ); //This gets the Boolean spec property of each column
<BR />//now, for each column perform the task of assigning the spec limits<BR /> If( Is Empty( spec ) == 0,
LSL = Try( spec["LSL"], . );
USL = Try( spec["USL"], . );
Target = Try( spec["Target"], . );
Eval(
Substitute(
Expr(
Column( dt, dt_ColNames[i] ) << Set Property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
),
),
Expr( __LSL__ ), LSL,
Expr( __USL__ ), USL,
Expr( __Target__ ), Target
)
);//This whole Eval() is wrapping a Substitution(), which wraps an expression Expr(). <BR /> //The variables that will be substituted are __LSL__ and so on. The Show Limits (1) checks the box to turn on the limits as reference lines.
);
);Questo dovrebbe aiutarti ad andare nella giusta direzione. Ma, senza vedere il tuo codice e capire cosa stai facendo, è difficile essere più specifici per soddisfare le tue esigenze esatte.
Spero che questo ti aiuti!,
DS