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 )를 사용하면 목록의 순서가 그래프의 순서와 일치할 것이라고 생각했습니다.
그러나 순서는 정확히 일치하지 않습니다. 예를 들어 Page By 역할의 변수가 [A50, B50, B100]이면 그래프는 [A50, B50, B100 ] 그러나 Sort List를 사용하여 생성된 목록은 [A50, B100 , B50].
정수 인덱스 대신 이름으로 Page By 그래프를 지정하는 방법이 있습니까? 그렇지 않은 경우 목록 순서가 그래프 순서와 일치하도록 내 목록을 정렬하는 방법이 있습니까?
Graph Builder는 하이브리드 정렬을 사용하고 있습니다.다음은 목록 값에 대해 수행할 작은 스크립트입니다.
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
)
);