Ho una sceneggiatura che crea fino a otto trame molto simili come parte dell'analisi. Il numero di grafici può variare in base all'esistenza di colonne corrispondenti. Le uniche differenze nei grafici sono le colonne utilizzate per i dati dell'asse y e i titoli. Nell'interesse dell'efficienza, stavo cercando di evitare di scrivere ogni trama in sequenza. Ho provato a utilizzare un ciclo for estratto da elenchi prestabiliti di nomi e titoli di colonne, ma non sono riuscito a farlo funzionare. È effettivamente possibile in JMP 13? Ho allegato la sezione dello script di ciò che ho provato.
Grazie per l'aiuto! Ho fatto funzionare la sceneggiatura!
Un paio di problemi.
1. Il tuo codice Graph Builder aveva un ")" errato che terminava il codice con un errore di analisi.
2. La funzione :Name() non risolve gli elementi, quindi non puoi avere qualcosa come: cols[f] come valore per la funzione.Deve essere passata solo una stringa tra virgolette,
Il codice seguente risolve entrambi i problemi
For( f = 1, f <= N Items( plots ), f++,
Eval(
Substitute(
Expr(
__plots__ = Graph Builder(
Size( 1267, 905 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :RPN, Order By( __col__ ), Descending, Order Statistic( "Mean" ) ) ),
Y( __col__ ),
Elements( Bar( X, Y, Legend( 4 ), Label( "Label by Value" ) ) ),
SendToReport(
Dispatch( {}, "Graph Builder", OutlineBox, {Set Title( outline titles[f] )} ),
Dispatch( {}, "RPN", ScaleBox, {Max( 10.5 ), Label Row( Label Orientation( "Angled" ) )} ),
Dispatch( {}, "400", ScaleBox, {Legend Model( 4, Properties( 0, {Fill Color( 53 )} ) )} ),
Dispatch( {}, "graph title", TextEditBox, {Set Text( plot titles[f] )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "RPN" )} ),
Dispatch( {}, "Y title", TextEditBox, {Set Text( "Affected Lots" )} ),
Dispatch( {}, "400", LegendBox, {Set Title( "" )} )
)
)
),
Expr( __plots__ ), Parse( "Plots" || Char( f ) ),
Expr( __col__ ), Parse( ":Name(\!"" || Char( cols[f] ) || "\!")" )
)
)
);