こんにちは、コミュニティの皆さん
難しい質問があります。以下の画像を参照してください。私は JMP 18 を使用しており、さまざまなカテゴリの四半期ごとの PPB 値を示す棒グラフを作成しようとしています。私が遭遇する問題は、グラフの合計値が最も高いカテゴリをスタックの一番下にしたいことです。たとえば、以下の画像では、カテゴリ メモリはすべての棒グラフ スタックの一番下にあり、その後に金属などが続きます。これらの位置を手動で変更できることはわかっていますが、そこがこの質問の複雑な部分です。
下の画像から、さまざまなテクノロジーを表示できるローカル データ フィルターがあることがわかります。さまざまなビューを変更すると、オーバーレイ カテゴリの合計値が大幅に変わります。ローカル データ フィルターが変更されるたびに、前に説明したようにオーバーレイ カテゴリを自動的に並べ替えるスクリプトが必要です。
ローカル データ フィルターが変更されたときにアクティブになる関数を作成することができました。グラフに表示されるカテゴリの値を何らかの配列に取得して、カスタム順序を作成し、それをグラフに適用する方法がわかりません。これを行う方法を誰か知っていますか?

ローカル データ フィルターが変更されたときにアクティブになる関数のサンプル コードを次に示します。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Cities.jmp" );
dist = Distribution(
Automatic Recalc( 1 ),
Continuous Distribution( Column( :POP ) )
);
filter = dist << Local Data Filter(
Add Filter( columns( :Region ) )
);
f = Function( {a},
Print( a );
Print( "you can glue additional code to this function" );
Return( y = a - 5 );
);
rs = filter << Make Filter Change Handler( f );
グラフ ビルダーのコードは次のとおりです。
PPM_TABLE << New Script("SubMech PPB by Quarter (Technologies)",
names default to here(1);
gb = Graph Builder(
Transform Column(
"PPB",
Set Properties("Configure Level", 1),
Set Property(
"Value Order",
{Custom Order(_subMech)}
),
Formula(:Sub Mech)
),
Size( 1120, 685 ),
Show Control Panel( 0 ),
Variables(
X( :CLNDR_YR_QTR_TXT ),
Y( :Net Shipments, Side( "Right" ) ),
Y( :PPB, Position( 1 ) ),
Overlay( :Sub Mech )
),
Elements(
Bar( X, Y( 2 ), Legend( 11 ), Bar Style( "Stacked" ), Label( "Label by Value" ) ),
Line( X, Y( 1 ), Overlay( 0 ), Legend( 10 ) )
),
Local Data Filter(
Add Filter(
columns( :Year, :TECH, :Fail Mech, :Sub Mech ),
Where( :TECH == "160k" ),
Where( :Fail Mech == {"*MUST SELECT", "Fab Related"} ),
Display( :TECH, N Items( 11 ), "Radio Box Display" ),
Display( :Fail Mech, N Items( 7 ), "Check Box Display" ),
Display( :Sub Mech, N Items( 7 ), "Check Box Display", Find( Set Text( "" ) ) )
)
),
SendToReport(
Dispatch( {}, "400", ScaleBox,
{Legend Model( 10, Properties( 0, {Line Color( 0 )}, Item ID( "Mean(Net Shipments)", 1 ) ) )}
),
Dispatch( {}, "graph title", TextEditBox,
{Set Text( "Fab 4 PPB by Quarter (Technologies by Sub Mechanism)" )}
),
Dispatch( {}, "400", LegendBox,
{Legend Position( {11, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10, [0]} )}
)
)
)
);