使用Graph Builder的并行图 - 使用用户选择的变量灵活的脚本你好。 我希望有人可以用少量的脚本来帮助我....
使用脚本,我希望能够获取列变量列表(取自列对话框)并创建一个平行plo 这些使用新的图形构建器。 我遇到的问题是列变量列表可以在每次运行脚本时更改,并且每次都是不同的数字(从2到10个选择的变量)。所以,我有类似的东西: varlist = list(:Var1,:Var2,:Var3,:Var4,:Var5,:Var6,:Var7) 并希望简单地将Y(varlist)集成到图形构建器代码中。 但是,似乎每个Y值几乎都要逐项列出(参见下面的代码)。 有没有一种相当简单的方法来获取我的列表并将其集成到代码中,知道每次运行脚本时列表都在不断变化?任何帮助表示赞赏!谢谢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:使用Graph Builder的并行图 - 使用用户选择的变量灵活的脚本作为Peter解决方案的替代方案,您始终可以直接构建所需的表达式(参见下文)。您可能会或可能不会将此视为“更简单”。
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:使用Graph Builder的并行图 - 使用用户选择的变量灵活的脚本非常感谢!
Re:使用Graph Builder的并行图 - 使用用户选择的变量灵活的脚本这样做。 我的例子使用了三个变量。
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:使用Graph Builder的并行图 - 使用用户选择的变量灵活的脚本我会遍历您选择的列变量并构建动态图形构建器字符串。 然后使用eval(parse())执行它。