使用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())執行它。