Parallele Darstellung mit Graph Builder - Skript, das mit benutzerdefinierten Variablen flexibel istHallo. Ich hoffe, dass mir jemand mit ein bisschen Scripting helfen kann ....
Mit einem Skript möchte ich eine Liste von Spaltenvariablen (aus dem Spaltendialogfeld) nehmen und eine erstellen Parallele Plo t davon mit dem neuen Graph Builder. Das Problem, das ich habe, ist, dass sich die Liste der Spaltenvariablen bei jeder Ausführung des Skripts ändern kann und jedes Mal eine andere Anzahl sein kann (von 2 bis 10 ausgewählten Variablen). Ich habe also so etwas wie: varlist = list (: Var1,: Var2,: Var3,: Var4,: Var5,: Var6,: Var7) und hoffte einfach Y (varlist) in den Code Builder Code zu integrieren. Es scheint jedoch, dass jeder Y-Wert fast detailliert sein muss (siehe Code unten). Gibt es eine recht einfache Methode, um meine Liste in den Code zu integrieren und zu wissen, dass sich die Liste bei jeder Ausführung des Skripts ständig ändert? Jede Hilfe wird geschätzt! Danke, Jim Pappas
varlist=list(:Var1, :Var2, :Var3, :Var4, :Var5, :Var6, :Var7);
Graph Builder(
Show Control Panel( 0 ),
Variables(
Y( :Var1 ),
Y( :Var2, Position( 1 ) ),
Y( :Var3, Position( 1 ) ),
Y( :Var4, Position( 1 ) ),
Y( :Var5, Position( 1 ) ),
Y( :Var6, Position( 1 ) ),
Y( :Var7, Position( 1 ) ),
),
Elements(
Parallel(
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Legend( 3 )
)
)
);
Betreff: Parallele Darstellung mit Graph Builder - Skript, das mit benutzerdefinierten Variablen flexibel istAlternativ zu Peters Lösung können Sie den gewünschten Ausdruck immer direkt erstellen (siehe unten). Sie können dies als "einfacher" betrachten.
Names Default To Here( 1 );
ClearLog();
// Example table
dt = New Table( "TestVar",
Add Rows( 5 ),
New Column( "Var1", Numeric, "Continuous", Set Values( [1, 2, 3, 4, 5] ) ),
New Column( "Var2", Numeric, "Continuous", Set Values( [3, 4, 5, 2, 1] ) ),
New Column( "Var3", Numeric, "Continuous", Set Values( [5, 4, 3, 2, 1] ) ),
New Column( "Var4", Numeric, "Continuous", Set Values( [5, 3, 1, 2, 4] ) )
);
// Dynamically build required subexpressions by looping over columns
vList = dt << getColumnNames;
varExpr = Expr( Variables() );
eleExpr = Expr( Parallel() );
For( v = 1, v <= N Items( vList ), v++,
varExpr = Insert( NameExpr(varExpr), Insert( Insert( Expr(Y()), NameExpr(vList[v])), Expr(Position(1))) );
eleExpr = Insert( NameExpr(eleExpr), Insert( Expr(Y()), v ) );
);
Print( varExpr, eleExpr );
// Assemble the final Graph Builder script
gbExpr = Expr( GraphBuilder() );
Insert Into( gbExpr, Name Expr( varExpr ) );
Insert Into( gbExpr, Insert( Expr( Elements() ), Name Expr( eleExpr ) ) );
Print( gbExpr );
// Run the script
gbExpr;
Betreff: Parallele Darstellung mit Graph Builder - Skript, das mit benutzerdefinierten Variablen flexibel istIch danke dir sehr!
Betreff: Parallele Darstellung mit Graph Builder - Skript, das mit benutzerdefinierten Variablen flexibel istDas wird es tun. Mein Beispiel verwendet drei Variablen.
dt = New Table( "TestVar", Add Rows( 5 ),
New Column( "Var1", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [1, 2, 3, 4, 5] ) ),
New Column( "Var2", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [3, 4, 5, 2, 1] ) ),
New Column( "Var3", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [5, 4, 3, 2, 1] ) )
);
varlist=list(:Var1, :Var2, :Var3);
gb_string = "dt << Graph Builder( Show Control Panel( 0 ), Variables(";
elements_string = " Elements( Parallel(";
for (i = 1, i <= nitems(varlist), i++,
one_col = ":" || char(varlist[i]);
if (i == 1,
gb_string = gb_string || evalinsert(" Y(^one_col^)");
elements_string = elements_string || evalinsert("Y(^i^)");
,
gb_string = gb_string || evalinsert(", Y(^one_col^, Position(1))");
elements_string = elements_string || evalinsert(", Y(^i^)");
);
);
gb_string = gb_string || ")," || elements_string || " ,Legend( 3 ) ) ) )";
eval(parse(gb_string));Betreff: Parallele Darstellung mit Graph Builder - Skript, das mit benutzerdefinierten Variablen flexibel istIch würde die ausgewählten Spaltenvariablen durchlaufen und eine dynamische Diagrammerstellungs-Zeichenfolge erstellen. Dann mit eval (parse ()) ausführen.