Page By를 사용하여 그래프 세트를 만드는 스크립트가 있습니다. 목록에서 가져온 각 그래프에 서로 다른 참 조선을 추가하고 싶습니다.
현재 기준선을 추가 할 그래프를 지정하는 방법을 아는 유일한 방법은 ScaleBox를 사용하여 정수 인덱스 (2에서 시작하는 것처럼 보임)로 그래프를 참조하는 것입니다. (정수 인덱스를 사용하는 것보다 더 좋은 방법이 있으면 알려주세요.) 예 :
For( i= 1, i<= n, i+=1,
RefLineValue= RefLineList[i];
mygraph << SendToReport(
Dispatch(
{},
"Data",
ScaleBox( i+1 ),
{Add Ref Line( RefLineValue, "Solid", "Black", "", 1 )}
);
)
);이것은 거의 작동하지만 내 문제는 ScaleBox 함수에 대해 정수 인덱스를 올바르게 지정하는 방법을 모른다는 것입니다. Page By 기능은 그래프를 어떤 종류 알파벳 순서의 순서이므로 Sort List (RefLineList)를 사용하면 목록의 순서가 그래프의 순서와 일치 할 것이라고 생각했습니다.
그러나 순서가 일치하지 않습니다. 예를 들어 페이지 기준 역할의 변수가 [A50, B50, B100]이면 그래프가 [A50, B50, B100 ]하지만 정렬 목록을 사용하여 생성 된 목록은 [A50, B100 , B50].
정수 인덱스 대신 이름으로 페이지 별 그래프를 지정하는 방법이 있습니까? 그렇지 않은 경우 목록 순서가 그래프 순서와 일치하도록 목록을 정렬하는 방법이 있습니까?
그래프 빌더는 하이브리드 정렬을 사용합니다.다음은 목록 값에 대해 수행 할 작은 스크립트입니다.
refList = {"B100", "A50", "B50"};
For( i = 1, i <= N Items( refList ), i++,
If( Length( refList[i] ) < 4,
refList[i] = Substr( refList[i], 1, 1 ) ||
Substr( "00", Length( refList[i] ) - 1 ) ||
Substr( refList[i], 2 )
);
);
refList = Sort List( refList );
For( i = 1, i <= N Items( refList ), i++,
While( Length( Word( 1, refList[i], "0" ) ) == 1,
refList[i] = Substr( refList[i], 1, 1 ) ||
Substr( refList[i], 3 )
)
);
또한 기준선을 설정할 때 더 간단한 방법을 사용하는 방법을 살펴볼 것을 제안합니다.참 조선을 추가하려는 AxisBox로 직접 이동하면 더 간단한 코드로 수행됩니다.아래는 예입니다.또한 스크립팅 가이드에는 디스플레이 트리 작업에 대한 전체 섹션이 있으며 스크립팅 인덱스에는 모든 기능에 대한 정의와 예제가 있습니다.
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
refList = {60,65};
gb = dt << Graph Builder(
Size( 528, 956 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ), Page( :sex ) ),
Elements( Points( X, Y, Legend( 8 ) ), Smoother( X, Y, Legend( 9 ) ) )
);
Summarize( dt, groups = by( :Sex ) );
For( i = 1, i <= N Items( groups ), i++,
Report( gb )[axisbox( i * 2 )] << Add Ref Line(
refList[i],
"Solid",
"Black",
"",
1
)
);