아래 예에서는 데이터 필터를 사용하여 데이터를 제한하고 GraphBuilder 스크립트 내의 로컬 데이터 필터를 사용하여 데이터를 추가로 제한합니다.
3개의 다른 순위가 표시됩니다.
- 첫 번째 순위 공식(파란색 점)에는 Excluded() 인수가 없으므로 (전역) 데이터 필터에 의해 제외된 모든 데이터 포인트가 계산됩니다. 이것이 첫 번째로 표시된 항목이 이미 높은 값에서 시작하는 이유입니다.
- 두 번째 순위 수식(빨간색)에는 Excluded() 인수가 있으므로 일부 행은 계산되지 않으며 순위 값은 더 낮습니다. 하지만 여전히 1부터 시작하지 않습니다. 이는 공식이 데이터 테이블에 저장되어 있고 플롯의 로컬 데이터 필터에 의해 제외된 행에 대해 알지 못하기 때문에 분명합니다.
- 세 번째 순위 공식은 두 번째 공식과 동일하지만 플롯 "내부"에서 생성되는 변환 열에 사용됩니다. 불행하게도 이 공식은 로컬 데이터 필터에 의해 제외된 행을 무시합니다.
로컬 데이터 필터가 공식에 의해 무시되지 않도록 하려면 어떤 트릭을 적용해야 합니까?

Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Data Filter( Add Filter( columns( :height ), Where( :height >= 65.815 ) ) );
dt << Graph Builder(
Transform Column( "Rank[height] 3", Formula( Col Rank( :height, Excluded() ) ) ),
Variables(
X(
:name,
Order By( :"Rank[height]"n, Ascending, Order Statistic( "Mean" ) )
),
Y( :"Rank[height]"n ),
Y( :"Rank[height] 2"n, Position( 1 ) ),
Y( :"Rank[height] 3"n, Position( 1 ) )
),
Elements( Points( X, Y( 1 ), Y( 2 ), Y( 3 ), Legend( 14 ) ) ),
Local Data Filter( Add Filter( columns( :height ), Where( :height >= 65.815 ) ) ),
SendToReport(
Dispatch(
{},
"Rank[height]",
ScaleBox,
{Min( 0 ), Max( 42 ), Inc( 5 ), Minor Ticks( 0 )}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
14,
Level Name(
1,
"Rank[height, Excluded]",
Item ID( "Rank[height] 2", 1 )
),
Level Name(
2,
"Rank[height, excluded] Transform Column",
Item ID( "Rank[height] 3", 1 )
),
Properties( 1, {Marker Size( 20 )}, Item ID( "Rank[height] 2", 1 ) )
)}
)
)
)