Hallo Community,
Ich habe eine schwierige Frage. Bitte sehen Sie sich das Bild unten als Referenz an. Ich verwende JMP 18 und versuche, ein Balkendiagramm zu erstellen, um PPB-Werte nach Quartal für verschiedene Kategorien anzuzeigen. Das Problem dabei ist, dass ich möchte, dass die Kategorie mit dem höchsten Gesamtwert aus dem Diagramm ganz unten im Stapel liegt. Beispielsweise sollte im Bild unten die Kategorie „Speicher“ ganz unten in allen Balkenstapeln liegen, gefolgt von „Metall“ und so weiter. Ich weiß, dass ich die Positionen dieser Elemente manuell ändern kann, aber hier kommt der komplizierte Teil dieser Frage ins Spiel.
Auf dem Bild unten sehen Sie, dass ich einen lokalen Datenfilter habe, mit dem Sie verschiedene Technologien betrachten können. Das Ändern der verschiedenen Ansichten ändert die Gesamtwerte für die Overlay-Kategorien drastisch. Ich brauche ein Skript, das die Overlay-Kategorien automatisch neu anordnet, wie ich es zuvor beschrieben habe, jedes Mal, wenn der lokale Datenfilter geändert wird.
Ich konnte eine Funktion erstellen, die aktiviert wird, wenn sich der lokale Datenfilter ändert. Ich kann nicht herausfinden, wie ich die Werte der Kategorien, die im Diagramm erscheinen, in eine Art Array bekomme, sodass ich eine benutzerdefinierte Reihenfolge erstellen und diese dann auf das Diagramm anwenden kann. Weiß jemand, wie das geht?

Hier ist ein Beispielcode für die Funktion, die aktiviert wird, wenn sich der lokale Datenfilter ändert:
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 );
Hier ist der Code für den Graph Builder:
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]} )}
)
)
)
);