Graph Builderを使用した並列プロット - ユーザーが選択した変数に対して柔軟なスクリプトこんにちは。 私は誰かが少量のスクリプトで私を助けてくれることを願っています…。
スクリプトを使用して、(列ダイアログから取得した)列変数のリストを取得して、パラレルプロ新しいグラフビルダーを使用してこれらのt。 私が抱えている問題は、列変数リストはスクリプトが実行されるたびに変わる可能性があり、また毎回異なる数になる可能性があることです(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 )
)
)
);
グラフビルダーを使用した並列プロット - ユーザーが選択した変数で柔軟なスクリプト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;
グラフビルダーを使用した並列プロット - ユーザーが選択した変数で柔軟なスクリプトどうもありがとうございます!
グラフビルダーを使用した並列プロット - ユーザーが選択した変数で柔軟なスクリプトこれはそれを行います。 私の例では3つの変数を使います。
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));グラフビルダーを使用した並列プロット - ユーザーが選択した変数で柔軟なスクリプト選択した列変数をループして、動的グラフビルダー文字列を作成します。 それからeval(parse())で実行してください。