Tracé parallèle avec Graph Builder - Script flexible avec des variables choisies par l'utilisateurBonjour. J'espère que quelqu'un pourra m'aider avec un peu de script ....
En utilisant un script, j'aimerais pouvoir prendre une liste de variables de colonne (extraites du dialogue de colonne) et créer un Plo parallèle t de ceux-ci en utilisant le nouveau constructeur de graphique. Le problème que je rencontre est que la liste des variables de colonne peut changer à chaque fois que le script est exécuté et également être un nombre différent à chaque fois (de 2 à 10 variables choisies). Donc, j'ai quelque chose comme: varlist = list (: Var1,: Var2,: Var3,: Var4,: Var5,: Var6,: Var7) et espérait simplement intégrer Y (varlist) dans le code du générateur de graphes. Cependant, il semble que chaque valeur Y doit être presque détaillée (voir le code ci-dessous). Existe-t-il un moyen assez simple de prendre ma liste et de l’intégrer dans le code, sachant que la liste change continuellement à chaque exécution du script? Toute aide est appréciée! Merci, 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 )
)
)
);
Re: Tracé parallèle à l'aide de Graph Builder - Script flexible avec des variables choisies par l'utilisateurAu lieu de la solution de Peter, vous pouvez toujours créer directement l'expression dont vous avez besoin (voir ci-dessous). Vous pouvez ou ne pas considérer cela comme «plus simple».
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;
Re: Tracé parallèle à l'aide de Graph Builder - Script flexible avec des variables choisies par l'utilisateurMerci beaucoup!
Re: Tracé parallèle à l'aide de Graph Builder - Script flexible avec des variables choisies par l'utilisateurCela va le faire. Mon exemple utilise trois variables.
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));Re: Tracé parallèle à l'aide de Graph Builder - Script flexible avec des variables choisies par l'utilisateurJe voudrais passer en boucle sur les variables de colonne sélectionnées et créer une chaîne de générateur de graphique dynamique. Puis exécutez-le avec eval (parse ()).