그래프 빌더를 사용한 병렬 플롯 - 사용자가 선택한 변수로 유연한 스크립트여보세요. 나는 누군가가 적은 양의 스크립트로 나를 도울 수 있기를 바라고있다.
스크립트를 사용하여 (열 대화 상자에서 가져온) 열 변수의 목록을 가져 와서 평행 평면 t는 새로운 그래프 빌더를 사용합니다. 내가 가지고있는 문제는 스크립트가 실행될 때마다 열 변수 목록이 변경 될 수 있으며 매번 다른 변수가 2 ~ 10 개의 선택된 변수가 될 수 있다는 것입니다. 그래서 나는 다음과 같은 것을 가지고있다. varlist = list (: Var1, : Var2, : Var3, : Var4, : Var5, : Var6, : Var7) 단순히 그래프 빌더 코드에 Y (varlist)를 통합하기를 원했습니다. 그러나 각 Y 값은 거의 항목별로 표시해야합니다 (아래 코드 참조). 내 목록을 가져 와서 코드에 통합하는 간단한 방법이 있습니까? 스크립트가 실행될 때마다 목록이 계속 변경된다는 것을 알고 있습니까? 어떤 도움을 주셔서 감사합니다! 고마워, 짐 파파스
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 )
)
)
);
다시 그래프 빌더를 사용하여 병렬 플롯 - 사용자가 선택한 변수로 유연 스크립트피터 솔루션의 대안으로, 직접적으로 필요한 식을 항상 구축 할 수 있습니다 (아래 참조). 당신은 이것을 '더 간단하게'생각할 수도 있고 그렇지 않을 수도 있습니다.
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;
다시 그래프 빌더를 사용하여 병렬 플롯 - 사용자가 선택한 변수로 유연 스크립트정말 고맙습니다!
다시 그래프 빌더를 사용하여 병렬 플롯 - 사용자가 선택한 변수로 유연 스크립트이렇게 할 것입니다. 내 예제에서는 세 가지 변수를 사용합니다.
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 ())을 사용하여 실행하십시오.