Aggiunta dinamica di grafici di distribuzione a una tabellaHo una tabella con circa ~ 180 colonne di dati.
Vorrei aggiungere dinamicamente un grafico di distribuzione (alla tabella) per ogni colonna tramite un ciclo for in JSL (con un filtro dati locale specifico per ciascuna colonna).
È possibile? Ciò che accade nei miei tentativi è che tutti i grafici allegati sono l'ultimo valore del ciclo for. Probabilmente qualcosa di semplice mi sfugge.
Grazie!
Automazione e scriptingRi: Aggiunta dinamica di grafici di distribuzione a una tabellaÈ possibile.Se puoi allegare una versione ripulita del tuo script, sarà più facile e veloce aiutarti.
Ri: Aggiunta dinamica di grafici di distribuzione a una tabellaNon sono sicuro di cosa stai cercando esattamente.Ecco un semplice script che crea tutte le distribuzioni con il filtro dati locale.
Names Default To Here( 1 );
dt =
// Open Data Table: Blood Pressure.jmp
// → Data Table( "Blood Pressure" )
Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
ColNames = dt << get column names( string, numeric );
nw = New Window( "Distributions",
H List Box(
For Each( {Col}, ColNames,
Eval(
Eval Expr(
Distribution(
Continuous Distribution( Column( Eval( col ) ) ),
Local Data Filter( Add Filter( columns( Eval( col )) ) )
)
)
)
)
)
);

Ri: Aggiunta dinamica di grafici di distribuzione a una tabellaEcco una versione abbreviata:
Clear Log();
Clear Globals();
dt = current data table ();
myTests = {:Name ("Cont_VDD"), :Name ("Cont_OUTP")};
for (i=1, i<= 2, i++,
dt << Add Properties to Table(
{New Script(
"Distribution",
Distribution(
Stack( 1 ),
Continuous Distribution(
Column( myTests[i] ) ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Outlier Box Plot( 0 ),
Process Capability( Use Column Property Specs )
)
)
});
);
Ri: Aggiunta dinamica di grafici di distribuzione a una tabellaIl tuo script non completa completamente il JSL richiesto per consentire il funzionamento degli script delle tabelle.Il riferimento di myTests deve essere analizzato nel nome esatto della colonna affinché lo script della tabella possa essere eseguito correttamente.Il JSL seguente forza l'espansione del codice prima di salvarlo nella tabella dati.Ho anche aggiunto un filtro locale e ho anche modificato il codice per rendere il nome dello script il nome della colonna
Names Default To Here( 1 );
Clear Log();
Clear Globals();
dt =
// Open Data Table: Blood Pressure.jmp
// → Data Table( "Blood Pressure" )
Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
myTests = dt << get column names( string, numeric );
For( i = 1, i <= N Items( myTests ), i++,
Eval(
Eval Expr(
dt << Add Properties to Table(
{New Script(
expr(myTests[i]),
Distribution(
Stack( 1 ),
Continuous Distribution( Column( Expr( myTests[i] ) ) ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Outlier Box Plot( 0 ),
Process Capability( Use Column Property Specs ),
Local Data Filter( Add Filter( columns( Expr( myTests[i] )) ) )
)
)}
)
)
)
);
Ri: Aggiunta dinamica di grafici di distribuzione a una tabellaSe utilizzi una variabile globale nello script di avvio per Distribution, utilizzerà il valore corrente memorizzato nella variabile. È necessario convertirlo in un valore letterale per lo script di avvio.
Ri: Aggiunta dinamica di grafici di distribuzione a una tabellagrazie molto!!!Ho imparato da autodidatta JSL... e ho incontrato alcuni ostacoli lungo il percorso... l'uso di Eval ora mi è chiaro,... grazie ancora!
--Opaco
Ri: Aggiunta dinamica di grafici di distribuzione a una tabellaInoltre, se stai cercando solo semplici istogrammi, a partire da JMP 15, è possibile visualizzare un istogramma sopra ciascuna colonna semplicemente selezionando l'icona dell'istogramma nella tabella dei dati
