Gráfica paralela usando Graph Builder - Script que es flexible con las variables elegidas por el usuarioHola. Espero que alguien pueda ayudarme con una pequeña cantidad de scripting ...
Usando un script, me gustaría poder tomar una lista de variables de columna (tomadas del diálogo de columna) y crear una Plo paralelo t de estos utilizando el nuevo generador de gráficos. El problema que tengo es que la lista de variables de columna puede cambiar cada vez que se ejecuta el script y también puede ser un número diferente cada vez (de 2 a 10 variables elegidas). Entonces, tengo algo como: varlist = list (: Var1,: Var2,: Var3,: Var4,: Var5,: Var6,: Var7) y esperaba simplemente integrar Y (varlist) en el código del generador de gráficos. Sin embargo, parece que cada valor Y debe estar casi desglosado (ver el código a continuación). ¿Existe una forma bastante sencilla de tomar mi lista e integrarla en el código, sabiendo que la lista cambia continuamente cada vez que se ejecuta el script? Cualquier ayuda es apreciada! Gracias, 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: Gráfico paralelo utilizando Graph Builder - Script que es flexible con las variables elegidas por el usuarioComo alternativa a la solución de Peter, siempre puede construir la expresión que necesita directamente (ver más abajo). Puedes o no considerar esto como "más 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: Gráfico paralelo utilizando Graph Builder - Script que es flexible con las variables elegidas por el usuarioMuchas gracias!
Re: Gráfico paralelo utilizando Graph Builder - Script que es flexible con las variables elegidas por el usuarioEsto lo hará. Mi ejemplo utiliza tres 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: Gráfico paralelo utilizando Graph Builder - Script que es flexible con las variables elegidas por el usuarioHaría un bucle sobre las variables de columna seleccionadas y construiría una cadena de generador de gráficos dinámicos. Luego ejecútelo con eval (parse ()).