Taylor Graph Builder 표현식친애하는 커뮤니티 여러분,
y 변수의 긴 목록이 포함된 그래프 빌더 스크립트를 만들고 싶습니다(새로운 테이블에 스크립트로 넣고 싶습니다).
제가 처음 시도한 방법은 표정 조작을 시도하는 것이었지만, 예상대로 효과가 없었습니다.
누구든지 그 스크립트를 쓰는 좋은 방법이 무엇인지 설명해줄 수 있나요?
아래 예에는 현재 방식, 즉 GB 인스턴스를 만든 후 y 변수를 추가하는 방식이 포함되어 있습니다.
감사합니다. 최선을 다하겠습니다.
Names Default To Here( 1 );
cdt = Open( "$SAMPLE_DATA\Big Class.jmp" );
col_lst = cdt << get column names( Continuous, "String" );
gb_expr = Expr(
cdt << Graph Builder(
Size( 534, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 4 ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 5 ) ) )
)
);
// this does not work, Expr() does not accept comma separated items
// Substitute Into( gb_expr, Expr( Y( :height ) ), Expr( Y( :height ), Y( :weight ) ) );
// gb_obj = gb_expr;
// this works
// creating GB instance
gb_obj = cdt << Graph Builder(
Size( 534, 450 ),
Show Control Panel( 0 ),
Variables( X( :age )),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 4 ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 5 ) ) )
);
// adding Y's
For Each( {ycol}, col_lst, Eval( Parse( Eval Insert( "gb_obj << variables( Y(:^ycol^ ))" ) ) ) );
// this I would like to create directly, w/o large parse/eval parts, that are bad for maintenance
my_target_expression = gb_obj << get script();
자동화 및 스크립팅Re: Taylor Graph Builder 표현식Eval(Eval Expr())를 사용하기 위한 이 사소한 변경이 당신이 원하는 것을 제공할 수 있을까요?
Names Default To Here( 1 );
cdt = Open( "$SAMPLE_DATA\Big Class.jmp" );
col_lst = cdt << get column names( Continuous, "String" );
gb_expr = Expr(
cdt << Graph Builder(
Size( 534, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 4 ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 5 ) ) )
)
);
// this does not work, Expr() does not accept comma separated items
// Substitute Into( gb_expr, Expr( Y( :height ) ), Expr( Y( :height ), Y( :weight ) ) );
// gb_obj = gb_expr;
// this works
// creating GB instance
gb_obj = cdt << Graph Builder(
Size( 534, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 4 ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 5 ) ) )
);
// adding Y's
For Each( {ycol}, col_lst,
Eval( Eval Expr( gb_obj << variables( Y( Expr( ycol ) ) ) ) )
);
// this I would like to create directly, w/o large parse/eval parts, that are bad for maintenance
my_target_expression = gb_obj << get script();Re: Taylor Graph Builder 표현식안녕하세요 짐,
감사합니다. eval/evaexpr을 사용하면 잘 작동합니다.
하지만 제 질문은 어떻게 하면 위쪽 부분에 전체 gb_expr을 빌드할 수 있을까였습니다.
제가 가장 놀랐던 건 이거였어요.
Substitute Into( gb_expr, Expr( Y( :height ) ), Expr( Y( :height ), Y( :weight ) ) );
작동하지 않았다.
그래서 표현식 조작(문자열 조작이 아님)을 사용하여 Graph Builder 표현식에 많은 "Y(:c1), Y(:c2) ..."을 대체하고 싶습니다.
친애하는,
Re: Taylor Graph Builder 표현식Substitute 문제를 해결하는 방법을 모르겠습니다. Graph Builder에 전달할 수 있는 Scripting Index Graph Builder 메시지를 탐색해 보세요.

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Variables( X( :sex ) ),
Elements( Points( X, Y ), Smoother( X, Y ) )
);
gb << Add Variable( {:height, Role( "Y" )} );
gb << Add Variable( {:weight, Role( "Y" )} );Re: Taylor Graph Builder 표현식@게오르그
@txnelson 님이 그래프 빌더에 메시지를 보내는 것에 관해 제안하신 내용을 토대로, 다음과 같이 하면 원하는 바에 더 가까이 다가갈 수 있을 듯합니다.
Names Default To Here( 1 );
cdt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col_lst = cdt << get column names( Continuous, "String" );
gb = Graph Builder(
Variables( X( :age ) ),
Elements( Points( X, Y ) )
);
for each( { yCol }, col_lst,
gb << Add Variable( { eval( yCol ), Role( "Y" ) } );
);
생성된 그래프 빌더 스크립트는 다음과 같습니다.
Graph Builder(<BR />Variables( X( :age ), Y( :height ), Y( :weight ) ),<BR />Elements( Position( 1, 1 ), Points( X, Y, Legend( 1 ) ) ),<BR />Elements( Position( 1, 2 ), Points( X, Y, Legend( 2 ) ) )<BR />);
Re: Taylor Graph Builder 표현식모두들 고마워요, 정말 멋진 것 같아요!
Re: Taylor Graph Builder 표현식나는 일반적으로 대체물을 사용하지 않고 표현식을 사용하여 빌드합니다. 아래는 하나의 옵션이지만 다른 옵션도 있습니다.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA\Big Class.jmp");
col_lst = cdt << get column names(Continuous, "String");
var_expr = Expr(Variables(X(:age)));
For Each({colname}, col_lst,
colname = "height";
Insert Into(var_expr, EvalExpr(Y(Expr(Name Expr(As Column(dt, colname))))));
);
gb_expr = EvalExpr(
dt << Graph Builder(
Size(534, 450),
Show Control Panel(0),
Expr(Name Expr(var_expr))
);
);
gb = Eval(gb_expr);
// gb << get script
gb << Save Script to Data Table("Plot");
Substitute만 사용하고 싶다면 변수 부분 전체를 대체해야 할 것 같습니다(아니면 몇 가지 트릭을 사용해야 할 수도 있습니다)
Names Default To Here(1);
cdt = Open("$SAMPLE_DATA\Big Class.jmp");
col_lst = cdt << get column names(Continuous, "String");
gb_expr = Expr(
cdt << Graph Builder(
Size(534, 450),
Show Control Panel(0),
Variables(X(:age), Y(:height)),
Elements(Position(1, 1), Points(X, Y, Legend(4))),
Elements(Position(1, 2), Points(X, Y, Legend(5)))
)
);
Substitute Into(gb_expr, Expr(Variables(X(:age), Y(:height))), Expr(Variables(X(:age), Y(:height), Y(:weight))));
show(gb_expr);