Bonjour la communauté,
Je viens vers vous avec une question difficile. Veuillez consulter l'image ci-dessous pour référence. J'utilise JMP 18 et j'essaie de créer un graphique à barres pour afficher les valeurs PPB par trimestre pour différentes catégories. Le problème que je rencontre est que je veux que la catégorie qui a la valeur totale la plus élevée du graphique soit en bas de la pile. Par exemple, dans l'image ci-dessous, la catégorie mémoire doit être en bas de toutes les piles de barres, suivie de la catégorie métal, etc. Je sais que je peux modifier manuellement les positions de celles-ci, mais c'est là que la partie compliquée de cette question entre en jeu.
D'après l'image ci-dessous, vous pouvez voir que j'ai un filtre de données local qui vous permet d'examiner différentes technologies. La modification des différentes vues modifie considérablement les valeurs totales des catégories de superposition. J'ai besoin d'un script qui réorganise automatiquement les catégories de superposition comme je l'ai décrit précédemment, chaque fois que le filtre de données local est modifié.
J'ai pu créer une fonction qui s'active lorsque le filtre de données local change. Je n'arrive pas à comprendre comment obtenir les valeurs des catégories qui apparaissent sur le graphique dans un type de tableau afin de pouvoir créer un ordre personnalisé, puis l'appliquer au graphique. Est-ce que quelqu'un sait comment faire cela ?

Voici un exemple de code pour la fonction qui s'active lorsque le filtre de données local change :
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 );
Voici le code du générateur de graphiques :
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]} )}
)
)
)
);