Ich habe ein Skript, das im Rahmen der Analyse bis zu acht sehr ähnliche Diagramme erstellt. Die Anzahl der Diagramme kann je nachdem, ob entsprechende Spalten vorhanden sind, variieren. Die einzigen Unterschiede in den Diagrammen sind die Spalten, die für die Daten der y-Achse und die Titel verwendet werden. Im Interesse der Effizienz habe ich versucht, zu vermeiden, dass jede Handlung nur sequentiell geschrieben wird. Ich habe versucht, eine for-Schleife zu verwenden, die aus vordefinierten Listen mit Spaltennamen und -titeln gezogen wurde, aber ich konnte sie nicht zum Laufen bringen. Ist dies in JMP 13 tatsächlich möglich? Ich habe den Skriptabschnitt dessen, was ich versucht habe, angehängt.
Danke für die Hilfe! Ich habe das Skript funktioniert!
Ein paar Probleme.
1. Ihr Graph Builder-Code hatte ein falsch platziertes ")", was den Code mit einem Parsing-Fehler beendete.
2. Die :Name()-Funktion löst keine Elemente auf, also können Sie nichts wie: cols[f] als Wert für die Funktion haben.Es muss nur eine Zeichenfolge in Anführungszeichen übergeben werden,
Der folgende Code behebt beide Probleme
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] ) || "\!")" )
)
)
);