以下の例では、データ フィルターを使用してデータを制限し、GraphBuilder スクリプト内のローカル データ フィルターを使用してデータをさらに制限します。
3 つの異なるランクがプロットされます。
- 最初のランク式 (青い点) には Excluded() 引数がないため、(グローバル) データ フィルターによって除外されたすべてのデータ ポイントがカウントされます。 これが、最初にプロットされたエントリがすでに高い値で始まっている理由です。
- 2 番目のランクの式 (赤) には Excluded() 引数があるため、一部の行はカウントされず、ランク値が低くなります。 しかし、それでも 1 から始まるわけではありません。 数式はデータ テーブルに保存されており、プロットのローカル データ フィルターによって除外される行については認識していないため、これは明らかです。
- 3 番目のランク式は 2 番目のものと同じですが、プロットの「内部」で生成される TRansform 列で使用されます。 残念ながら、この式でも、ローカル データ フィルターによって除外された行は無視されます。
ローカル データ フィルターが数式で無視されないようにするには、どのトリックを適用する必要がありますか?

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 ) )
)}
)
)
)