안녕하세요,
일부 시각화를 테이블 스크립트로 스크립팅하는 작업이 있습니다.일반적으로 이것은 간단합니다. 대략적인 부분은 스크립트가 실행 중일 때 다른 소스를 참조해야 하는 참조선입니다.일반적으로 외부에서 변수를 받아들이지 않는 두 개의 함수에 참조가 포함되어 있기 때문에 표현식 조작을 사용하여 이러한 값을 삽입하는 방법을 찾는 것은 현재 내 기술 수준을 넘어선 것입니다. 극복해야 할 여러 장애물이 있습니다.
- 외부 변수를 잘 받아들이지 않는 함수
- var1 = 1;
var2 = 2;
Dt << 새 스크립트( "예제", 인쇄( var1 + var2 ) ); - 변수는 테이블 스크립트 외부에서 정의됩니다. 숫자는 데이터 테이블에서 참조되므로 이는 필수 사항입니다.
- 보내다()
- 이 내부의 값은 정적이고 명백하게 명시된 값이어야 합니다.
- 함수가 포함되지 않은 표현식 작업
- 예 = expr( 새 스크립트() );
제목 = "테스트";
삽입(예: 제목 ); // show(예제) = 새 스크립트( "테스트" )
// 나중에 예의 22행에서와 같이 x축에 열을 삽입할 때…
x_empty = expr( X() );
x_cols = { :col1, :col2 };
insert into( x_empty, x_cols[1] ); // 오류 발생, JMP는 X()가 무엇인지 모릅니다. - 이것은 어떻게든 X()가 평가되지 않아야 하지만 여전히 항목 삽입을 허용한다는 것을 말해줍니다. 이것은 expr() 및 expr()과 같은 이름이 수행해야 하는 것이지만 이 경우에는 작동하지 않습니다.
예제 스크립트에는 내가 수행하려는 간단한 예제가 포함되어 있습니다. 새로 생성된 테이블의 제목과 번호는 Big Class에 삽입되는 함수가 실행되기 전에 테이블 스크립트에 삽입됩니다. 스크립트 맨 아래에 이에 대한 기본적인 예가 있습니다.
Names default to here(1);
clear log();
// Reference table
// Used to populate data in table script below for dt( big )
dt = New Table( "Example",
Add Rows(2),
New Column( "Growth Label", Character, Nominal, Set Values( { "Tall", "Short" } ) ),
New Column( "Height tag", Numeric, Continuous, Set Values( { 67.5, 60 } ) ),
);
// Example table
big = open( "$SAMPLE_DATA/Big Class.jmp" );
// Plain example - vis added as table script * works *
big << New Script( "Example",
Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Fit to Window,
Set α Level( 0.05 ),
Variables( X( :weight ), X( :age ), Y( :height ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 4 ) ) ),
SendToReport(
Dispatch(
{},
"height",
ScaleBox,
{Add Ref Line( 67.5, "Dashed", "Medium Dark Green", "Tall", 1 ),
Add Ref Line( 60, "Dashed", "Medium Dark Red", "Short", 1 )}
)
)
)
);
// Needed info for below
vis_x = { :weight, :age };
vis_y = { :height };
// Modified example - vis added as table script * not working *
big << New Script( "Example",
Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Fit to Window,
Set α Level( 0.05 ),
Variables( X( vis_x[1] ), X( vis_x[1] ), Y( vis_y[1] ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 4 ) ) ),
SendToReport(
Dispatch(
{},
"height",
ScaleBox,
{Add Ref Line( big:Height tag[1], "Dashed", "Medium Dark Green", big:Growth Label[1], 1 ),
Add Ref Line( big:Height tag[2], "Dashed", "Medium Dark Red", big:Growth Label[2], 1 )}
)
)
)
);
// Example: expression manipulations
var1 = 10; // represents some reference number, from somewhere
var2 = 1; // represents some reference number, from somewhere
expr_test = eval expr( expr(var1) + expr(var2) );
expr_begin = expr( New Script( "Var replacement" ) );
insert into( expr_begin, name expr( expr_test ) );
show( expr_begin );
eval( eval expr( big << expr( name expr( expr_begin ) ) ) ); // Script contains: 10 + 1
/* Notice how the table script "Var replacement" in big doesn't contain var1 & var2,
it contains the values they represent. This is what I want to do. */
close( dt, "No Save" );"참조선"을 검색하면 커뮤니티 포럼에서 꽤 많은 결과를 얻을 수 있습니다. 지금까지 내가 찾은 가장 가까운 예는 아래 링크입니다.
https://community.jmp.com/t5/Discussions/Is-there-a-way-to-automatically-draw-ref-lines-at-the-peak-of/mp/87721/highlight/false#M38710
https://community.jmp.com/t5/Discussions/Fill-color-for-multiple-reference-lines/mp/273205