Grafici paralleli con Graph Builder - Script flessibile con variabili scelte dall'utenteCiao. Spero che qualcuno possa aiutarmi con una piccola quantità di script ....
Utilizzando uno script, mi piacerebbe essere in grado di prendere un elenco di variabili di colonna (prese dalla finestra di dialogo della colonna) e creare un Plo parallelo di questi usando il nuovo generatore di grafici. Il problema che sto avendo è che l'elenco delle variabili di colonna può cambiare ogni volta che lo script viene eseguito e anche essere ogni volta un numero diverso (da 2 a 10 variabili scelte). Quindi, ho qualcosa come: varlist = lista (: Var1,: Var2,: Var3,: Var4,: Var5,: Var6,: Var7) e speravo di integrare semplicemente Y (varlist) nel codice del generatore di grafici. Tuttavia, sembra che ogni valore Y debba essere quasi dettagliato (vedi il codice sotto). C'è un modo abbastanza semplice per prendere la mia lista e integrarla nel codice, sapendo che l'elenco cambia continuamente ogni volta che viene eseguito lo script? Qualsiasi aiuto è apprezzato! Grazie, 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 )
)
)
);
Ri: Parallel Plot using Graph Builder - Script che è flessibile con variabili scelte dall'utenteIn alternativa alla soluzione di Peter, puoi sempre creare l'espressione di cui hai bisogno direttamente (vedi sotto). È possibile o meno considerare questo come "più semplice".
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;
Ri: Parallel Plot using Graph Builder - Script che è flessibile con variabili scelte dall'utenteGrazie mille!
Ri: Parallel Plot using Graph Builder - Script che è flessibile con variabili scelte dall'utenteQuesto lo farà. Il mio esempio utilizza tre variabili.
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));Ri: Parallel Plot using Graph Builder - Script che è flessibile con variabili scelte dall'utenteVorrei passare in rassegna le variabili di colonna selezionate e creare una stringa di generatore di grafici dinamici. Quindi eseguirlo con eval (parse ()).