大家好,
我向您提出一个难题。请参考下图。我正在使用 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]} )}
)
)
)
);