Ciao comunità,
Vengo da voi con una domanda difficile. Si prega di vedere l'immagine qui sotto per riferimento. Sto usando JMP 18 e sto cercando di creare un grafico a barre per mostrare i valori PPB per trimestre per varie categorie. Il problema che ho incontrato è che voglio che la categoria che ha il valore totale più alto dal grafico sia in fondo alla pila. Ad esempio, nell'immagine qui sotto la categoria memoria dovrebbe essere in fondo a tutte le pile di barre seguita da metallo e così via. So che posso cambiare manualmente le posizioni di queste, ma è qui che entra in gioco la parte complicata di questa domanda.
Dall'immagine sottostante puoi vedere che ho un filtro dati locale in cui puoi guardare diverse tecnologie. Cambiando le diverse viste si modificano drasticamente i valori totali per le categorie di overlay. Ho bisogno di uno script che riordini automaticamente le categorie di overlay come ho descritto prima, ogni volta che il filtro dati locale è stato cambiato.
Sono riuscito a creare una funzione che si attiva quando cambia il filtro dati locale. Non riesco a capire come ottenere i valori delle categorie che appaiono sul grafico in un qualche tipo di array in modo da poter creare un ordine personalizzato e poi applicarlo al grafico. Qualcuno sa come fare?

Ecco un esempio di codice per la funzione che si attiva quando cambia il filtro dati locale:
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 );
Ecco il codice per il generatore di grafici:
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]} )}
)
)
)
);